components/openstack/ironic/files/ironic-db
author Matt Keenan <matt.keenan@oracle.com>
Wed, 10 Jun 2015 10:12:11 +0100
changeset 4460 e5811789e2fb
permissions -rw-r--r--
PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service) PSARC 2015/070 pecan - Lightweight Python web-framework PSARC 2015/071 PyCA Python Cryptography PSARC 2015/170 OpenStack client for Ironic (Bare Metal Provisioning) PSARC 2015/171 scp - python secure copy PSARC 2015/196 singledispatch - Single-dispatch generic functions for Python PSARC 2015/197 logutils - Set of handlers for standard Python logging library PSARC 2015/198 Support for enumerations in Python 2.6 and 2.7 PSARC 2015/250 paramiko - SSHv2 protocol implementation in Python 20547142 Request to integrate Ironic into userland 17502639 The Python paramiko module should be added to Userland 20172780 The Python module scp should be added to Userland 20180376 The Python module ironicclient should be added to Userland 20182588 The Python module pecan should be added to Userland 20465525 The PyCA cryptography module should be added to Userland 20904396 The Python module singledispatch should be added to Userland 20904413 The Python module logutils should be added to Userland 20917993 The Python enum34 module should be added to Userland
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
4460
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     1
#!/usr/bin/python2.7
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     2
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     3
# Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     4
#
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     5
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     6
#    not use this file except in compliance with the License. You may obtain
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     7
#    a copy of the License at
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     8
#
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
     9
#         http://www.apache.org/licenses/LICENSE-2.0
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    10
#
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    11
#    Unless required by applicable law or agreed to in writing, software
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    12
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    13
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    14
#    License for the specific language governing permissions and limitations
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    15
#    under the License.
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    16
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    17
import os
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    18
from subprocess import Popen, PIPE
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    19
import sys
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    20
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    21
import smf_include
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    22
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    23
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    24
def start():
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    25
    ironic_conf = sys.argv[2]
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    26
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    27
    # verify config path is valid
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    28
    if not os.path.exists(ironic_conf) or not os.access(ironic_conf, os.R_OK):
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    29
        print >> sys.stderr, '%s does not exist or is not readable' % \
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    30
            ironic_conf
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    31
        return smf_include.SMF_EXIT_ERR_CONFIG
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    32
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    33
    # Create/Sync Ironic database
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    34
    cmd = ["/usr/bin/ironic-dbsync", "--config-file", ironic_conf,
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    35
           "create_schema"]
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    36
    proc = Popen(cmd, stderr=PIPE, stdout=PIPE)
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    37
    _out, error = proc.communicate()
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    38
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    39
    if proc.returncode != 0:
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    40
        if "DbMigrationError" in error:
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    41
            # Attempted to create already existing database
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    42
            # Attempt to upgrade instead
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    43
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    44
            cmd = ["/usr/bin/ironic-dbsync", "--config-file", ironic_conf,
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    45
                   "upgrade"]
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    46
            proc = Popen(cmd, stderr=PIPE, stdout=PIPE)
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    47
            _out, error = proc.communicate()
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    48
            if proc.returncode != 0:
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    49
                print >> sys.stderr, \
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    50
                    'Error executing ironic-dbsync upgrade: %s' % error
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    51
                return smf_include.SMF_EXIT_ERR_FATAL
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    52
        else:
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    53
            print >> sys.stderr, \
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    54
                'Error executing ironic-dbsync create_schema: %s' % error
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    55
            return smf_include.SMF_EXIT_ERR_FATAL
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    56
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    57
    return smf_include.SMF_EXIT_OK
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    58
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    59
if __name__ == "__main__":
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    60
    os.putenv("LC_ALL", "C")
e5811789e2fb PSARC 2015/172 OpenStack Ironic (OpenStack Bare Metal Provisioning Service)
Matt Keenan <matt.keenan@oracle.com>
parents:
diff changeset
    61
    smf_include.smf_main()