# HG changeset patch # User Sean Wilcox # Date 1490387326 21600 # Node ID e35d3ee6d1b84e8315ec59d988f0b927426446a7 # Parent fd5b3d04626959b2df6259d7e55763d210d2188b 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 diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/Makefile --- a/components/openstack/cloudbase-init/Makefile Thu Mar 23 23:22:55 2017 -0700 +++ b/components/openstack/cloudbase-init/Makefile Fri Mar 24 14:28:46 2017 -0600 @@ -65,6 +65,12 @@ COMPONENT_PRE_BUILD_ACTION = \ $(CP) $(COMPONENT_DIR)/PKG-INFO $(SOURCE_DIR) +COMPONENT_POST_INSTALL_ACTION += \ + $(CP) \ + files/solaris.py \ + $(PROTO_DIR)$(PYTHON_LIB)/cloudbaseinit/metadata/services/osconfigdrive; \ + $(PYTHON) -m compileall $(PROTO_DIR)/$(PYTHON_VENDOR_PACKAGES) + # common targets build: $(BUILD_NO_ARCH) diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/cloudbase-init.p5m --- a/components/openstack/cloudbase-init/cloudbase-init.p5m Thu Mar 23 23:22:55 2017 -0700 +++ b/components/openstack/cloudbase-init/cloudbase-init.p5m Fri Mar 24 14:28:46 2017 -0600 @@ -20,7 +20,7 @@ # # -# Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved. # set name=pkg.fmri \ @@ -39,9 +39,9 @@ set name=org.opensolaris.arc-caseid value=PSARC/2016/010 set name=org.opensolaris.consolidation value=$(CONSOLIDATION) # -file cloudbase-init.conf path=etc/cloudbase-init.conf file cloudbase-init.xml path=lib/svc/manifest/application/cloudbase-init.xml file cloudbase-init path=lib/svc/method/cloudbase-init +file cloudbase-init.stencil path=lib/svc/stencils/cloudbase-init.stencil file path=usr/bin/cloudbase-init file path=usr/lib/python$(PYVER)/vendor-packages/cloudbase_init-$(COMPONENT_VERSION)-py$(PYVER).egg-info/PKG-INFO file path=usr/lib/python$(PYVER)/vendor-packages/cloudbase_init-$(COMPONENT_VERSION)-py$(PYVER).egg-info/SOURCES.txt @@ -67,6 +67,8 @@ file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/metadata/services/osconfigdrive/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/metadata/services/osconfigdrive/base.py file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/metadata/services/osconfigdrive/factory.py +file files/solaris.py \ + path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/metadata/services/osconfigdrive/solaris.py file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/metadata/services/osconfigdrive/windows.py file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/osutils/__init__.py file path=usr/lib/python$(PYVER)/vendor-packages/cloudbaseinit/osutils/base.py diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/files/cloudbase-init --- a/components/openstack/cloudbase-init/files/cloudbase-init Thu Mar 23 23:22:55 2017 -0700 +++ b/components/openstack/cloudbase-init/files/cloudbase-init Fri Mar 24 14:28:46 2017 -0600 @@ -1,6 +1,6 @@ #!/usr/bin/python2.7 -# Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain @@ -16,6 +16,7 @@ import ConfigParser import os +import subprocess import sys import urllib2 @@ -25,21 +26,22 @@ def start(): # verify metadata service is reachable - try: - parser = ConfigParser.ConfigParser() - parser.read('/etc/cloudbase-init.conf') - if parser.has_option('DEFAULT', 'metadata_base_url'): - url = parser.get('DEFAULT', 'metadata_base_url') - else: - url = 'http://169.254.169.254' - open_url = urllib2.urlopen(url, timeout=20) - except Exception as err: - print >> sys.stderr, 'No response from %s: %s' % (url, err) - return smf_include.SMF_EXIT_ERR_FATAL + parser = ConfigParser.ConfigParser() + parser.read('/etc/cloudbase-init.conf') + if not parser.has_option('DEFAULT', 'config_drive'): + try: + if parser.has_option('DEFAULT', 'metadata_base_url'): + url = parser.get('DEFAULT', 'metadata_base_url') + else: + url = 'http://169.254.169.254' + open_url = urllib2.urlopen(url, timeout=20) + except Exception as err: + print >> sys.stderr, 'No response from %s: %s' % (url, err) + return smf_include.SMF_EXIT_ERR_FATAL # Initiate cloudbase-init service - cmd_str = "/usr/bin/cloudbase-init --debug" - smf_include.smf_subprocess(cmd_str) + cmd_str = "/usr/bin/cloudbase-init" + subprocess.call(cmd_str, stdout=sys.stdout, stderr=sys.stderr) if __name__ == "__main__": os.putenv("LC_ALL", "C") diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/files/cloudbase-init.conf --- a/components/openstack/cloudbase-init/files/cloudbase-init.conf Thu Mar 23 23:22:55 2017 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,2 +0,0 @@ -[DEFAULT] -plugins=cloudbaseinit.plugins.common.userdata.UserDataPlugin diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/files/cloudbase-init.stencil --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/openstack/cloudbase-init/files/cloudbase-init.stencil Fri Mar 24 14:28:46 2017 -0600 @@ -0,0 +1,14 @@ +# This file is generated via SMF, and configuration should be changed by +# setting or updating properties in the cloudbase-init:default service:instance. +# Any modifications to this file will be overwritten on the next start of the +# cloudbase-init. +# +# For example to turn on debugging do the following : +# svccfg -s cloudbase-init:default setprop config/debug = boolean: true +# svcadm refresh cloudbase-init + +[DEFAULT] +; add any properties and their values that are in the config property group. +$%/config/(.*)/ { +$%1 = $%{config/$%1} +} diff -r fd5b3d046269 -r e35d3ee6d1b8 components/openstack/cloudbase-init/files/cloudbase-init.xml --- a/components/openstack/cloudbase-init/files/cloudbase-init.xml Thu Mar 23 23:22:55 2017 -0700 +++ b/components/openstack/cloudbase-init/files/cloudbase-init.xml Fri Mar 24 14:28:46 2017 -0600 @@ -1,7 +1,7 @@ + - - - + + + - + + + + + + + + + + + + +