components/puppet/files/solaris/lib/puppet/provider/pkg_publisher/solaris.rb
author Drew Fisher <drew.fisher@oracle.com>
Thu, 23 Jan 2014 09:56:38 -0700
changeset 1661 c59d67c9d1d7
parent 1409 9db4ba32e740
child 2031 5b9a9cd91149
permissions -rw-r--r--
17798202 Several providers return errors due to Ruby 1.9 changes.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     1
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     2
# CDDL HEADER START
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     3
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     4
# The contents of this file are subject to the terms of the
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     5
# Common Development and Distribution License (the "License").
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     6
# You may not use this file except in compliance with the License.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     7
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     8
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     9
# or http://www.opensolaris.org/os/licensing.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    10
# See the License for the specific language governing permissions
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    11
# and limitations under the License.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    12
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    13
# When distributing Covered Code, include this CDDL HEADER in each
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    14
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    15
# If applicable, add the following below this CDDL HEADER, with the
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    16
# fields enclosed by brackets "[]" replaced with your own identifying
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    17
# information: Portions Copyright [yyyy] [name of copyright owner]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    18
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    19
# CDDL HEADER END
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    20
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    21
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    22
#
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1409
diff changeset
    23
# Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved.
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    24
#
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    25
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    26
Puppet::Type.type(:pkg_publisher).provide(:pkg_publisher) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    27
    desc "Provider for Solaris publishers"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    28
    confine :operatingsystem => [:solaris]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    29
    defaultfor :osfamily => :solaris, :kernelrelease => ['5.11', '5.12']
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    30
    commands :pkg => '/usr/bin/pkg'
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    31
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    32
    def self.instances
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    33
        publishers = {}
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    34
        publisher_order = []
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    35
        pkg(:publisher, "-H", "-F", "tsv").split("\n").collect do |line|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    36
            name, sticky, syspub, enabled, type, status, origin, proxy = \
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    37
                line.split("\t")
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    38
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    39
            # set the order of the publishers
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    40
            if not publisher_order.include?("name")
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    41
                publisher_order << name
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    42
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    43
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    44
            # strip off any trailing "/" characters
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    45
            if origin.end_with?("/")
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    46
                origin = origin[0..-2]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    47
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    48
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1409
diff changeset
    49
            if publishers.has_key?(name)
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    50
                # if we've seen this publisher before, simply update the origin
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    51
                # array
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    52
                publishers[name]["origin"] << origin
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    53
            else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    54
                # create a new hash entry for this publisher
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    55
                publishers[name] = {'sticky' => sticky, 'enable' => enabled,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    56
                                    'origin' => Array[origin]}
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    57
                publishers[name]["proxy"] = proxy if proxy != "-"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    58
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    59
                index = publisher_order.index(name)
1661
c59d67c9d1d7 17798202 Several providers return errors due to Ruby 1.9 changes.
Drew Fisher <drew.fisher@oracle.com>
parents: 1409
diff changeset
    60
                if index == 0
1409
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    61
                    publishers[name]["searchfirst"] = true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    62
                    publishers[name]["searchafter"] = nil
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    63
                else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    64
                    publishers[name]["searchfirst"] = nil
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    65
                    publishers[name]["searchafter"] = publisher_order[index-1]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    66
                end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    67
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    68
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    69
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    70
        # create new entries for the system
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    71
        publishers.keys.collect do |publisher|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    72
            new(:name => publisher,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    73
                :ensure => :present,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    74
                :sticky => publishers[publisher]["sticky"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    75
                :enable => publishers[publisher]["enable"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    76
                :origin => publishers[publisher]["origin"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    77
                :proxy => publishers[publisher]["proxy"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    78
                :searchfirst => publishers[publisher]["searchfirst"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    79
                :searchafter => publishers[publisher]["searchafter"],
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    80
                :searchbefore => nil,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    81
                :sslkey => nil,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    82
                :sslcert => nil)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    83
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    84
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    85
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    86
    def self.prefetch(resources)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    87
        # pull the instances on the system
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    88
        publishers = instances
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    89
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    90
        # set the provider for the resource to set the property_hash
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    91
        resources.keys.each do |name|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    92
            if provider = publishers.find{ |publisher| publisher.name == name}
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    93
                resources[name].provider = provider
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    94
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    95
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    96
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    97
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    98
    # property getters - each getter does exactly the same thing so create
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    99
    # dynamic methods to handle them
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   100
    [:sticky, :enable, :origin, :proxy, :searchfirst, :searchafter,
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   101
     :searchbefore, :sslkey, :sslcert].each do |property|
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   102
        define_method(property) do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   103
            begin
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   104
                @property_hash[property]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   105
            rescue
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   106
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   107
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   108
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   109
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   110
    def exists?
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   111
        # only compare against @resource if one is provided via manifests
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   112
        if @property_hash[:ensure] == :present and @resource[:origin] != nil
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   113
            return @property_hash[:origin].sort() == @resource[:origin].sort()
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   114
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   115
        @property_hash[:ensure] == :present
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   116
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   117
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   118
    def build_origin
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   119
        origins = []
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   120
        
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   121
        # add all the origins from the manifest
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   122
        for o in @resource[:origin] do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   123
            origins << "-g" << o
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   124
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   125
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   126
        # remove all the existing origins
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   127
        if @property_hash != {}
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   128
            for o in @property_hash[:origin] do
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   129
                origins << "-G" << o
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   130
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   131
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   132
        origins
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   133
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   134
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   135
    def build_flags
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   136
        flags = []
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   137
        if enable = @resource[:enable] and enable != nil
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   138
            if enable == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   139
                flags << "--enable"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   140
            elsif enable == :false
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   141
                flags << "--disable"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   142
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   143
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   144
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   145
        if searchfirst = @resource[:searchfirst] and searchfirst != ""
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   146
            if searchfirst == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   147
                flags << "--search-first"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   148
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   149
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   150
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   151
        if sticky = @resource[:sticky] and sticky != nil
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   152
            if sticky == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   153
                flags << "--sticky"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   154
            elsif sticky == :false
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   155
                flags << "--non-sticky"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   156
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   157
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   158
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   159
        if searchafter = @resource[:searchafter] and searchafter != ""
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   160
            if pkg(:publisher, "-H", "-F", "tsv").split("\n").detect \
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   161
                { |line| line.split()[0] == searchafter }
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   162
                    flags << "--search-after" << searchafter
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   163
            else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   164
                Puppet.warning "Publisher #{searchafter} not found.  " \
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   165
                               "Skipping --search-after argument"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   166
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   167
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   168
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   169
        if searchbefore = @resource[:searchbefore] and searchbefore != ""
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   170
            if pkg(:publisher, "-H", "-F", "tsv").split("\n").detect \
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   171
                { |line| line.split()[0] == searchbefore }
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   172
                    flags << "--search-before" << searchbefore
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   173
            else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   174
                Puppet.warning "Publisher #{searchbefore} not found.  " \
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   175
                               "Skipping --search-before argument"
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   176
            end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   177
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   178
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   179
        if proxy = @resource[:proxy]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   180
            flags << "--proxy" << proxy
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   181
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   182
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   183
        if sslkey = @resource[:sslkey]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   184
            flags << "-k" << sslkey
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   185
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   186
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   187
        if sslcert = @resource[:sslcert]
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   188
            flags << "-c" << sslcert
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   189
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   190
        flags
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   191
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   192
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   193
    # property setters
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   194
    def sticky=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   195
        if value == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   196
            pkg("set-publisher", "--sticky", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   197
        else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   198
            pkg("set-publisher", "--non-sticky", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   199
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   200
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   201
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   202
    def enable=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   203
        if value == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   204
            pkg("set-publisher", "--enable", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   205
        else
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   206
            pkg("set-publisher", "--disable", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   207
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   208
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   209
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   210
    def searchfirst=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   211
        if value == :true
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   212
            pkg("set-publisher", "--search-first", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   213
        end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   214
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   215
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   216
    def searchbefore=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   217
        pkg("set-publisher", "--search-before", value, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   218
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   219
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   220
    def searchafter=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   221
        pkg("set-publisher", "--search-after", value, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   222
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   223
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   224
    def proxy=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   225
        pkg("set-publisher", "--proxy", value, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   226
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   227
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   228
    def sslkey=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   229
        pkg("set-publisher", "-k", value, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   230
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   231
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   232
    def sslcert=(value)
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   233
        pkg("set-publisher", "-c", value, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   234
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   235
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   236
    # required puppet functions
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   237
    def create
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   238
        pkg("set-publisher", build_flags, build_origin, @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   239
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   240
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   241
    def destroy
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   242
        pkg("unset-publisher", @resource[:name])
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   243
    end
9db4ba32e740 PSARC/2013/218 Puppet Phase 2
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   244
end