components/openstack/neutron/files/neutron-l3-agent
author Drew Fisher <drew.fisher@oracle.com>
Tue, 15 Apr 2014 07:31:13 -0700
branchs11-update
changeset 3077 3e8d5f02f4a0
parent 3028 5e73a3a3f66a
child 1944 56ac2df1785b
permissions -rw-r--r--
18416129 neutron-l3-agent should include dependency on ipfilter service 18407503 neutron net-delete doesn't delete subnets/ports with no VM associated 18545343 nova-conductor's method shouldn't try to enable mysql 18545393 cinder-volume's method shouldn't try to enable iscsi/target 18545462 Some panels, menus, and options should be removed from Horizon 18545581 upstream bug 1187129 should be patched in 18551500 keystone's SMF method shouldn't try to enable mysql 18553610 problem in SERVICE/KEYSTONE
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3028
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python2.6
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     2
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     3
# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     4
#
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     5
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     6
#    not use this file except in compliance with the License. You may obtain
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     7
#    a copy of the License at
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     8
#
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     9
#         http://www.apache.org/licenses/LICENSE-2.0
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    10
#
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    11
#    Unless required by applicable law or agreed to in writing, software
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    12
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    13
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    14
#    License for the specific language governing permissions and limitations
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    15
#    under the License.
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    16
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    17
import os
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    18
import sys
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    19
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    20
import smf_include
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    21
3077
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    22
from subprocess import Popen, PIPE
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    23
3028
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    24
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    25
def start():
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    26
    # verify paths are valid
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    27
    for f in sys.argv[2:4]:
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    28
        if not os.path.exists(f) or not os.access(f, os.R_OK):
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    29
            print '%s does not exist or is not readable' % f
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    30
            return smf_include.SMF_EXIT_ERR_CONFIG
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    31
3077
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    32
    # System-wide forwarding (either ipv4 or ipv6 or both) must be enabled
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    33
    # before neutron-l3-agent can be started.
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    34
    cmd = ["/usr/sbin/ipadm", "show-prop", "-c", "-p", "forwarding",
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    35
           "-o", "current", "ipv4"]
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    36
    p = Popen(cmd, stdout=PIPE, stderr=PIPE)
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    37
    output, error = p.communicate()
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    38
    if p.returncode != 0:
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    39
        print "failed to determine if IPv4 forwarding is enabled or not"
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    40
        return smf_include.SMF_EXIT_ERR_FATAL
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    41
    v4fwding = "on" in output
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    42
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    43
    cmd = ["/usr/sbin/ipadm", "show-prop", "-c", "-p", "forwarding",
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    44
           "-o", "current", "ipv6"]
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    45
    p = Popen(cmd, stdout=PIPE, stderr=PIPE)
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    46
    output, error = p.communicate()
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    47
    if p.returncode != 0:
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    48
        print "failed to determine if IPv6 forwarding is enabled or not"
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    49
        return smf_include.SMF_EXIT_ERR_FATAL
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    50
    v6fwding = "on" in output
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    51
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    52
    if not any((v4fwding, v6fwding)):
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    53
        print "System-wide IPv4 or IPv6 (or both) forwarding must be enabled " \
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    54
            "before enabling %s" % os.getenv("SMF_FMRI")
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    55
        return smf_include.SMF_EXIT_ERR_CONFIG
3e8d5f02f4a0 18416129 neutron-l3-agent should include dependency on ipfilter service
Drew Fisher <drew.fisher@oracle.com>
parents: 3028
diff changeset
    56
3028
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    57
    cmd = "/usr/lib/neutron/neutron-l3-agent --config-file %s " \
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    58
        "--config-file %s" % tuple(sys.argv[2:4])
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    59
    smf_include.smf_subprocess(cmd)
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    60
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    61
if __name__ == "__main__":
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    62
    os.putenv("LC_ALL", "C")
5e73a3a3f66a PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    63
    smf_include.smf_main()