summaryrefslogtreecommitdiff
path: root/cloudinit/config/cc_yum_add_repo.py
diff options
context:
space:
mode:
authorScott Moser <smoser@ubuntu.com>2016-08-10 09:06:15 -0600
committerScott Moser <smoser@ubuntu.com>2016-08-10 09:06:15 -0600
commitc3c3dc693c14175e110b5fe125d4d5f98ace9700 (patch)
tree8858702c2c8a6ad4bf1bb861a4565e0a9c28e588 /cloudinit/config/cc_yum_add_repo.py
parent5bd3493d732e5b1902872958e8681f17cbc81ce5 (diff)
downloadcloud-init-trunk.tar.gz
README: Mention move of revision control to git.HEADtrunk
cloud-init development has moved its revision control to git. It is available at https://code.launchpad.net/cloud-init Clone with git clone https://git.launchpad.net/cloud-init or git clone git+ssh://git.launchpad.net/cloud-init For more information see https://git.launchpad.net/cloud-init/tree/HACKING.rst
Diffstat (limited to 'cloudinit/config/cc_yum_add_repo.py')
-rw-r--r--cloudinit/config/cc_yum_add_repo.py107
1 files changed, 0 insertions, 107 deletions
diff --git a/cloudinit/config/cc_yum_add_repo.py b/cloudinit/config/cc_yum_add_repo.py
deleted file mode 100644
index 64fba869..00000000
--- a/cloudinit/config/cc_yum_add_repo.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# vi: ts=4 expandtab
-#
-# Copyright (C) 2012 Yahoo! Inc.
-#
-# Author: Joshua Harlow <harlowja@yahoo-inc.com>
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 3, as
-# published by the Free Software Foundation.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-import os
-
-import configobj
-import six
-
-from cloudinit import util
-
-
-def _canonicalize_id(repo_id):
- repo_id = repo_id.lower().replace("-", "_")
- repo_id = repo_id.replace(" ", "_")
- return repo_id
-
-
-def _format_repo_value(val):
- if isinstance(val, (bool)):
- # Seems like yum prefers 1/0
- return str(int(val))
- if isinstance(val, (list, tuple)):
- # Can handle 'lists' in certain cases
- # See: http://bit.ly/Qqrf1t
- return "\n ".join([_format_repo_value(v) for v in val])
- if not isinstance(val, six.string_types):
- return str(val)
- return val
-
-
-# TODO(harlowja): move to distro?
-# See man yum.conf
-def _format_repository_config(repo_id, repo_config):
- to_be = configobj.ConfigObj()
- to_be[repo_id] = {}
- # Do basic translation of the items -> values
- for (k, v) in repo_config.items():
- # For now assume that people using this know
- # the format of yum and don't verify keys/values further
- to_be[repo_id][k] = _format_repo_value(v)
- lines = to_be.write()
- lines.insert(0, "# Created by cloud-init on %s" % (util.time_rfc2822()))
- return "\n".join(lines)
-
-
-def handle(name, cfg, _cloud, log, _args):
- repos = cfg.get('yum_repos')
- if not repos:
- log.debug(("Skipping module named %s,"
- " no 'yum_repos' configuration found"), name)
- return
- repo_base_path = util.get_cfg_option_str(cfg, 'yum_repo_dir',
- '/etc/yum.repos.d/')
- repo_locations = {}
- repo_configs = {}
- for (repo_id, repo_config) in repos.items():
- canon_repo_id = _canonicalize_id(repo_id)
- repo_fn_pth = os.path.join(repo_base_path, "%s.repo" % (canon_repo_id))
- if os.path.exists(repo_fn_pth):
- log.info("Skipping repo %s, file %s already exists!",
- repo_id, repo_fn_pth)
- continue
- elif canon_repo_id in repo_locations:
- log.info("Skipping repo %s, file %s already pending!",
- repo_id, repo_fn_pth)
- continue
- if not repo_config:
- repo_config = {}
- # Do some basic sanity checks/cleaning
- n_repo_config = {}
- for (k, v) in repo_config.items():
- k = k.lower().strip().replace("-", "_")
- if k:
- n_repo_config[k] = v
- repo_config = n_repo_config
- missing_required = 0
- for req_field in ['baseurl']:
- if req_field not in repo_config:
- log.warn(("Repository %s does not contain a %s"
- " configuration 'required' entry"),
- repo_id, req_field)
- missing_required += 1
- if not missing_required:
- repo_configs[canon_repo_id] = repo_config
- repo_locations[canon_repo_id] = repo_fn_pth
- else:
- log.warn("Repository %s is missing %s required fields, skipping!",
- repo_id, missing_required)
- for (c_repo_id, path) in repo_locations.items():
- repo_blob = _format_repository_config(c_repo_id,
- repo_configs.get(c_repo_id))
- util.write_file(path, repo_blob)