cli: Add --cloud-init user-data=/path/to/user-data

Signed-off-by: Cole Robinson <crobinso@redhat.com>
This commit is contained in:
Cole Robinson 2019-11-20 17:37:36 -05:00
parent 9a3f73710e
commit e1bd5f92cf
4 changed files with 19 additions and 4 deletions

View File

@ -0,0 +1,6 @@
#cloud-config
password: atomic
chpasswd: {expire: False}
ssh_pwauth: True
ssh_authorized_keys:
- ssh-rsa AAA...SDvZ user1@domain.com

View File

@ -83,7 +83,8 @@ test_files = {
'COLLIDE': "/dev/default-pool/collidevol1.img",
'ADMIN-PASSWORD-FILE': "%s/admin-password.txt" % XMLDIR,
'USER-PASSWORD-FILE': "%s/user-password.txt" % XMLDIR,
'SSH-KEY-FILE': "%s/ssh-key.txt" % XMLDIR
'SSH-KEY-FILE': "%s/ssh-key.txt" % XMLDIR,
'USER-DATA-FILE': "%s/user-data.txt" % XMLDIR,
}
@ -875,9 +876,10 @@ c.add_compare("--connect %s" % (utils.URIs.test_suite), "noargs-fail", use_defau
c.add_compare("--connect %s --os-variant fedora26" % (utils.URIs.test_suite), "osvariant-noargs-fail", use_default_args=False) # No arguments
c.add_compare("--connect %s --os-variant fedora26 --pxe --print-xml" % (utils.URIs.test_suite), "osvariant-defaults-pxe", use_default_args=False) # No arguments
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init", "cloud-init-default") # default --cloud-init behavior is root-password-generate=yes,disable=yes
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-generate=yes,disable=no", "cloud-init-options") # --cloud-init options
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-file=%(ADMIN-PASSWORD-FILE)s,disable=no", "cloud-init-options") # --cloud-init-options
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init ssh-key=%(SSH-KEY-FILE)s", "cloud-init-options") # --cloud-init-options
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-generate=yes,disable=no", "cloud-init-options") # --cloud-init root-password-generate
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init root-password-file=%(ADMIN-PASSWORD-FILE)s,disable=no", "cloud-init-options") # --cloud-init root-password-file
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init ssh-key=%(SSH-KEY-FILE)s", "cloud-init-options") # --cloud-init ssh-key
c.add_compare("--disk %(EXISTIMG1)s --os-variant fedora28 --cloud-init user-data=%(USER-DATA-FILE)s", "cloud-init-options") # --cloud-init user-data=
c.add_valid("--panic help --disk=? --check=help", grep="path_in_use") # Make sure introspection doesn't blow up
c.add_valid("--connect test:///default --test-stub-command", use_default_args=False) # --test-stub-command
c.add_valid("--nodisks --pxe", grep="VM performance may suffer") # os variant warning

View File

@ -1631,6 +1631,7 @@ class ParserCloudInit(VirtCLIParser):
cls.add_arg("root-password-file", "root_password_file")
cls.add_arg("disable", "disable", is_onoff=True)
cls.add_arg("ssh-key", "ssh_key")
cls.add_arg("user-data", "user_data")
def parse_cloud_init(optstr):

View File

@ -11,6 +11,7 @@ class CloudInitData():
root_password_file = None
generated_root_password = None
ssh_key = None
user_data = None
def _generate_password(self):
self.generated_root_password = ""
@ -50,6 +51,11 @@ def create_metadata(scratchdir):
def _create_userdata_content(cloudinit_data):
if cloudinit_data.user_data:
log.debug("Using user-data content from path=%s",
cloudinit_data.user_data)
return open(cloudinit_data.user_data).read()
content = "#cloud-config\n"
if cloudinit_data.root_password_generate or cloudinit_data.root_password_file: