components/openstack/swift/files/swift-replicator-rsync
author Drew Fisher <drew.fisher@oracle.com>
Fri, 10 Jul 2015 20:29:35 +0000
branchs11-update
changeset 4625 18adb92d4193
parent 3196 4c06db2d9388
permissions -rw-r--r--
20816335 move the core OpenStack components to Python 2.7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4625
18adb92d4193 20816335 move the core OpenStack components to Python 2.7
Drew Fisher <drew.fisher@oracle.com>
parents: 3196
diff changeset
     1
#!/usr/bin/python2.7
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
4625
18adb92d4193 20816335 move the core OpenStack components to Python 2.7
Drew Fisher <drew.fisher@oracle.com>
parents: 3196
diff changeset
     3
# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
#
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
#    not use this file except in compliance with the License. You may obtain
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
#    a copy of the License at
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
#
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
#         http://www.apache.org/licenses/LICENSE-2.0
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
#
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
#    Unless required by applicable law or agreed to in writing, software
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
#    License for the specific language governing permissions and limitations
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
#    under the License.
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
import errno
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
import os
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
import subprocess
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
import sys
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
import smf_include
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
def start():
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
    cfgfile = "/etc/swift/rsyncd.conf"
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
    if not os.path.isfile(cfgfile):
3178
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    28
        smf_include.smf_method_exit(
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    29
            smf_include.SMF_EXIT_ERR_CONFIG, "missing_config",
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    30
            "Missing configuration file")
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
    # This is the default delivered in /etc/swift/rsyncd.conf
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
    try:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
        os.mkdir("/var/run/swift")
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
    except OSError as e:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
        if e.errno != errno.EEXIST:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
            raise
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
    cmdline = ["/usr/bin/rsync", "--daemon", "--config", cfgfile]
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
    try:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
        proc = subprocess.Popen(cmdline)
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
    except OSError as err:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
        print >> sys.stderr, "Error executing rsync: %s" % err
3178
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    44
        smf_include.smf_method_exit(
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    45
            smf_include.SMF_EXIT_ERR_FATAL, "exec_error",
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    46
            "Error executing rsync: %s" % err)
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
    ret = proc.wait()
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
    if ret != 0:
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
        print >> sys.stderr, "rsync daemon failed to start (see message above)"
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
        print >> sys.stderr, "commandline:", " ".join(cmdline)
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
        print >> sys.stderr, "exit code:", ret
3178
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    53
        smf_include.smf_method_exit(
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    54
            smf_include.SMF_EXIT_ERR_FATAL, "exec_fail",
77584387a894 PSARC/2014/207 OpenStack Glance Update to Havana
Drew Fisher <drew.fisher@oracle.com>
parents: 3135
diff changeset
    55
            "rsync daemon failed to start (see service log)")
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
3196
4c06db2d9388 19073547 editing built-in flavors fails with name too long
Drew Fisher <drew.fisher@oracle.com>
parents: 3178
diff changeset
    57
    return smf_include.SMF_EXIT_OK
3135
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
if __name__ == "__main__":
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
    os.putenv("LC_ALL", "C")
0a68f5e884e0 PSARC 2014/050 OpenStack Swift (OpenStack Object Storage Service)
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
    smf_include.smf_main()