components/openstack/nova/files/solariszones/sysconfig.py
author Sean Wilcox <sean.wilcox@oracle.com>
Fri, 24 Mar 2017 14:28:46 -0600
changeset 7799 e35d3ee6d1b8
parent 6882 9cc65d5f5376
permissions -rw-r--r--
PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive 25615046 cloudbase-init should support configdrive on solaris 25027429 Enable cloudbase-init debug in config file
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     1
# vim: tabstop=4 shiftwidth=4 softtabstop=4
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     2
7799
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
     3
# Copyright (c) 2013, 2017, Oracle and/or its affiliates. All rights reserved.
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     4
#
353323c7bdc1 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
353323c7bdc1 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
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     7
#    a copy of the License at
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
     8
#
353323c7bdc1 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
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    10
#
353323c7bdc1 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
353323c7bdc1 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
353323c7bdc1 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
353323c7bdc1 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
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    15
#    under the License.
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    16
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    17
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    18
import locale
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    19
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    20
from lxml import etree
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    21
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    22
from solaris_install.utils import encrypt_password
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    23
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    24
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    25
DTD_URL = '/usr/share/lib/xml/dtd/service_bundle.dtd.1'
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    26
DOCTYPE_STR = '<!DOCTYPE service_bundle SYSTEM "%s">' % DTD_URL
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    27
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    28
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    29
def create_ncp_defaultfixed(addrtype, linkname, netid, ip_version, ip=None,
6854
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
    30
                            route=None, nameservers=None, host_routes=None):
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    31
    """ return an etree object representing fixed (static) networking
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    32
    """
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    33
    svcbundle = etree.Element("service_bundle", type="profile",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    34
                              name="openstack")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    35
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    36
    # create the network/physical service profile
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    37
    physical = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    38
                                type="service", name="network/physical")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    39
    instance = etree.SubElement(physical, "instance", enabled="true",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    40
                                name="default")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    41
    pg = etree.SubElement(instance, "property_group", type="application",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    42
                          name="netcfg")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    43
    etree.SubElement(pg, "propval", type="astring", name="active_ncp",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    44
                     value="DefaultFixed")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    45
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    46
    # create the network/install service profile
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    47
    install = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    48
                               type="service", name="network/install")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    49
    instance = etree.SubElement(install, "instance", enabled="true",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    50
                                name="default")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    51
4550
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    52
    if not route:
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    53
        # network/install SMF method script checks for ::0 for IPv6
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    54
        # for no-gateway case
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    55
        route = '0.0.0.0' if ip_version == 4 else '::0'
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    56
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    57
    if ip_version == 4:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    58
        pg4 = etree.SubElement(instance, "property_group",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    59
                               type="ipv4_interface",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    60
                               name="install_ipv4_interface_%d" % netid)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    61
        etree.SubElement(pg4, "propval", type="astring", name="address_type",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    62
                         value=addrtype)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    63
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    64
        if addrtype == "static":
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    65
            etree.SubElement(pg4, "propval", type="net_address_v4",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    66
                             name="static_address", value=ip)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    67
            etree.SubElement(pg4, "propval", type="astring", name="name",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    68
                             value="%s/v4" % linkname)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    69
            etree.SubElement(pg4, "propval", type="net_address_v4",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    70
                             name="default_route", value=route)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    71
        else:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    72
            etree.SubElement(pg4, "propval", type="astring", name="name",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    73
                             value="%s/dhcp" % linkname)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    74
    else:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    75
        if addrtype == "static":
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    76
            link = etree.SubElement(instance, "property_group",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    77
                                    type="ipv6_interface",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    78
                                    name="install_ipv6_interface_%d" % netid)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    79
            etree.SubElement(link, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    80
                             name="address_type", value="addrconf")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    81
            etree.SubElement(link, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    82
                             name="name", value="%s/aconf" % linkname)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    83
            etree.SubElement(link, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    84
                             name="stateless", value="no")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    85
            etree.SubElement(link, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    86
                             name="stateful", value="no")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    87
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    88
            pg6 = etree.SubElement(instance, "property_group",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    89
                                   type="ipv6_interface",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    90
                                   name="install_ipv6_interface_%d_1" % netid)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    91
            etree.SubElement(pg6, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    92
                             name="address_type", value="static")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    93
            etree.SubElement(pg6, "propval", type="net_address_v6",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    94
                             name="static_address", value=ip)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    95
            etree.SubElement(pg6, "propval", type="astring", name="name",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    96
                             value="%s/v6" % linkname)
4550
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    97
            etree.SubElement(pg6, "propval", type="net_address_v6",
1235ed3c5285 21306943 IP address prefix length is not being set in the network/install service profile
Girish Moodalbail <Girish.Moodalbail@oracle.COM>
parents: 3998
diff changeset
    98
                             name="default_route", value=route)
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
    99
        else:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   100
            pg6 = etree.SubElement(instance, "property_group",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   101
                                   type="ipv6_interface",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   102
                                   name="install_ipv6_interface_%d" % netid)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   103
            etree.SubElement(pg6, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   104
                             name="address_type", value="addrconf")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   105
            etree.SubElement(pg6, "propval", type="astring", name="name",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   106
                             value="%s/dhcp" % linkname)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   107
            etree.SubElement(pg6, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   108
                             name="stateless", value="yes")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   109
            etree.SubElement(pg6, "propval", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   110
                             name="stateful", value="yes")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   111
6854
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   112
    if host_routes:
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   113
        # create the host-routes profile
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   114
        for i, host_route in enumerate(host_routes):
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   115
            hr_dest = host_route['cidr']
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   116
            hr_gw = host_route['gateway']['address']
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   117
            hr_pg_name = "route_%d_%d" % (netid, i)
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   118
            hr_ip_version = host_route['gateway']['version']
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   119
            if hr_ip_version == 4:
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   120
                hr_pg_type = "ipv4_route"
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   121
                hr_pval_type = "net_address_v4"
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   122
            else:
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   123
                hr_pg_type = "ipv6_route"
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   124
                hr_pval_type = "net_address_v6"
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   125
            pg = etree.SubElement(instance, "property_group", type=hr_pg_type,
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   126
                                  name=hr_pg_name)
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   127
            etree.SubElement(pg, "propval", type=hr_pval_type,
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   128
                             name="destination", value=hr_dest)
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   129
            etree.SubElement(pg, "propval", type=hr_pval_type,
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   130
                             name="gateway", value=hr_gw)
52081f923019 24465850 Update Nova for the Mitaka release
Laszlo Peter <laszlo.peter@oracle.com>
parents: 4695
diff changeset
   131
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   132
    # create DNS profile for static configurations
6882
9cc65d5f5376 23748400 empty dns/client profile generated
Gowtham Thommandra <Gowtham.Thommandra@Oracle.COM>
parents: 6854
diff changeset
   133
    if addrtype == "static" and nameservers:
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   134
        dns = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   135
                               type="service", name="network/dns/client")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   136
        etree.SubElement(dns, "instance", enabled="true", name="default")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   137
        pg = etree.SubElement(dns, "property_group", type="application",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   138
                              name="config")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   139
        prop = etree.SubElement(pg, "property", type="net_address",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   140
                                name="nameserver")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   141
        proplist = etree.SubElement(prop, "net_address_list")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   142
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   143
        if isinstance(nameservers, str):
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   144
            etree.SubElement(proplist, "value_node", value=nameservers)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   145
        elif isinstance(nameservers, list):
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   146
            for entry in nameservers:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   147
                etree.SubElement(proplist, "value_node", value=entry)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   148
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   149
        search = etree.SubElement(pg, "property", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   150
                                  name="search")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   151
        etree.SubElement(search, "astring_list")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   152
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   153
    return svcbundle
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   154
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   155
4695
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   156
def create_default_root_account(expire=None, sshkey=None, password=None):
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   157
    """ return an etree object representing the root account
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   158
    """
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   159
    svcbundle = etree.Element("service_bundle", type="profile",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   160
                              name="openstack")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   161
    service = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   162
                               type="service", name="system/config-user")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   163
    instance = etree.SubElement(service, "instance", enabled="true",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   164
                                name="default")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   165
    root_pg = etree.SubElement(instance, "property_group", type="application",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   166
                               name="root_account")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   167
    etree.SubElement(root_pg, "propval", type="astring", name="type",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   168
                     value="normal")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   169
4695
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   170
    if password is not None:
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   171
        etree.SubElement(root_pg, "propval", type="astring", name="password",
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   172
                         value=password)
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   173
    else:
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   174
        etree.SubElement(root_pg, "propval", type="astring", name="password",
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   175
                         value='NP')
0aecdc531b77 19774239 Nova should support setting the Admin Password
Elena Ouyang <elena.ouyang@oracle.com>
parents: 4550
diff changeset
   176
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   177
    if expire is not None:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   178
        etree.SubElement(root_pg, "propval", type="astring", name="expire",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   179
                         value=expire)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   180
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   181
    if sshkey is not None:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   182
        prop = etree.SubElement(root_pg, "property", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   183
                                name="ssh_public_keys")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   184
        alist = etree.SubElement(prop, "astring_list")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   185
        etree.SubElement(alist, "value_node", value=sshkey)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   186
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   187
    return svcbundle
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   188
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   189
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   190
def create_root_ssh_keys(key):
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   191
    """ return an etree object to set a public SSH key for root
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   192
    """
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   193
    svcbundle = etree.Element("service_bundle", type="profile",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   194
                              name="openstack")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   195
    service = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   196
                               type="service", name="system/config-user")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   197
    instance = etree.SubElement(service, "instance", enabled="true",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   198
                                name="default")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   199
    root_pg = etree.SubElement(instance, "property_group", type="application",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   200
                               name="root_account")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   201
    prop = etree.SubElement(root_pg, "property", type="astring",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   202
                            name="ssh_public_keys")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   203
    alist = etree.SubElement(prop, "astring_list")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   204
    etree.SubElement(alist, "value_node", value=key)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   205
    return svcbundle
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   206
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   207
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   208
def create_hostname(name):
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   209
    """ return an etree object representing the instance's hostname
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   210
    """
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   211
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   212
    svcbundle = etree.Element("service_bundle", type="profile",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   213
                              name="openstack")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   214
    service = etree.SubElement(svcbundle, "service", version="1",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   215
                               type="service", name="system/identity")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   216
    instance = etree.SubElement(service, "instance", enabled="true",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   217
                                name="node")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   218
    pg = etree.SubElement(instance, "property_group", type="application",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   219
                          name="config")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   220
    etree.SubElement(pg, "propval", type="astring", name="nodename",
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   221
                     value=name)
3998
5bd484384122 PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents: 1760
diff changeset
   222
    etree.SubElement(pg, "propval", type="boolean",
5bd484384122 PSARC 2015/110 OpenStack service updates for Juno
Danek Duvall <danek.duvall@oracle.com>
parents: 1760
diff changeset
   223
                     name="ignore_dhcp_hostname", value="true")
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   224
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   225
    return svcbundle
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   226
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   227
7799
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   228
def create_config_drive():
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   229
    """ return an etree object representing the configdrive options for
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   230
    cloudbase-init
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   231
    """
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   232
    svcbundle = etree.Element("service_bundle", type="profile",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   233
                              name="cloudbase-init")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   234
    service = etree.SubElement(svcbundle, "service", version="1",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   235
                               type="service",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   236
                               name="application/cloudbase-init")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   237
    instance = etree.SubElement(service, "instance", name="default",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   238
                                enabled="true")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   239
    pg = etree.SubElement(instance, "property_group", type="application",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   240
                          name="config")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   241
    etree.SubElement(pg, "propval", type="astring", name="config_drive_types",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   242
                     value="iso")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   243
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   244
    etree.SubElement(pg, "propval", type="boolean", name="config_drive",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   245
                     value="true")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   246
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   247
    etree.SubElement(pg, "propval", type="astring",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   248
                     name="config_drive_locations", value="cdrom, hdd")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   249
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   250
    v = "cloudbaseinit.metadata.services.configdrive.ConfigDriveService"
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   251
    etree.SubElement(pg, "propval", type="astring", name="metadata_services",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   252
                     value=v)
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   253
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   254
    mntpg = etree.SubElement(instance, "property_group", type="application",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   255
                             name="configdrive")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   256
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   257
    etree.SubElement(mntpg, "propval", type="boolean", name="copydone",
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   258
                     value="false")
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   259
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   260
    return svcbundle
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   261
e35d3ee6d1b8 PSARC 2017/039 cloudbase-init: Portable cloud image initialization with ConfigDrive
Sean Wilcox <sean.wilcox@oracle.com>
parents: 6882
diff changeset
   262
1760
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   263
def create_sc_profile(path, tree):
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   264
    """ create a file containing the proper XML headers and encoding for a
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   265
    given etree object
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   266
    """
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   267
    encoding = locale.getpreferredencoding()
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   268
    if encoding == "646":
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   269
        # The C locale on Solaris is returned as '646'.  Set it to 'US-ASCII'
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   270
        # instead
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   271
        encoding = 'US-ASCII'
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   272
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   273
    xml_str = etree.tostring(tree, pretty_print=True, encoding=encoding,
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   274
                             xml_declaration=True, doctype=DOCTYPE_STR)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   275
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   276
    # insert a comment just under the doctype line
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   277
    comment = etree.Comment(" Auto-generated by OpenStack Nova ")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   278
    xml_list = xml_str.split("\n")
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   279
    xml_list.insert(2, etree.tostring(comment))
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   280
    xml_str = "\n".join(xml_list)
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   281
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   282
    with open(path, "w+") as fh:
353323c7bdc1 PSARC/2013/350 OpenStack for Solaris (Umbrella)
Drew Fisher <drew.fisher@oracle.com>
parents:
diff changeset
   283
        fh.write(xml_str)