Execute the contents of the VM map
(self, dmap)
| 2005 | return ret |
| 2006 | |
| 2007 | def run_map(self, dmap): |
| 2008 | """ |
| 2009 | Execute the contents of the VM map |
| 2010 | """ |
| 2011 | if self._has_loop(dmap): |
| 2012 | msg = "Uh-oh, that cloud map has a dependency loop!" |
| 2013 | log.error(msg) |
| 2014 | raise SaltCloudException(msg) |
| 2015 | # Go through the create list and calc dependencies |
| 2016 | for key, val in dmap["create"].items(): |
| 2017 | log.info("Calculating dependencies for %s", key) |
| 2018 | level = 0 |
| 2019 | level = self._calcdep(dmap, key, val, level) |
| 2020 | log.debug("Got execution order %s for %s", level, key) |
| 2021 | dmap["create"][key]["level"] = level |
| 2022 | |
| 2023 | try: |
| 2024 | existing_list = dmap["existing"].items() |
| 2025 | except KeyError: |
| 2026 | existing_list = {}.items() |
| 2027 | |
| 2028 | for key, val in existing_list: |
| 2029 | log.info("Calculating dependencies for %s", key) |
| 2030 | level = 0 |
| 2031 | level = self._calcdep(dmap, key, val, level) |
| 2032 | log.debug("Got execution order %s for %s", level, key) |
| 2033 | dmap["existing"][key]["level"] = level |
| 2034 | |
| 2035 | # Now sort the create list based on dependencies |
| 2036 | create_list = sorted(dmap["create"].items(), key=lambda x: x[1]["level"]) |
| 2037 | output = {} |
| 2038 | if self.opts["parallel"]: |
| 2039 | parallel_data = [] |
| 2040 | master_name = None |
| 2041 | master_minion_name = None |
| 2042 | master_host = None |
| 2043 | master_finger = None |
| 2044 | try: |
| 2045 | master_name, master_profile = next( |
| 2046 | ( |
| 2047 | (name, profile) |
| 2048 | for name, profile in create_list |
| 2049 | if profile.get("make_master", False) is True |
| 2050 | ) |
| 2051 | ) |
| 2052 | master_minion_name = master_name |
| 2053 | log.debug("Creating new master '%s'", master_name) |
| 2054 | if ( |
| 2055 | salt.config.get_cloud_config_value("deploy", master_profile, self.opts) |
| 2056 | is False |
| 2057 | ): |
| 2058 | raise SaltCloudSystemExit( |
| 2059 | "Cannot proceed with 'make_master' when salt deployment " |
| 2060 | "is disabled(ex: --no-deploy)." |
| 2061 | ) |
| 2062 | |
| 2063 | # Generate the master keys |
| 2064 | log.debug("Generating master keys for '%s'", master_profile["name"]) |
no test coverage detected