PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/runners/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/runners/cloud.py |
""" The Salt Cloud Runner ===================== This runner wraps the functionality of salt cloud making salt cloud routines available to all internal apis via the runner system """ import logging import os import salt.cloud import salt.utils.args from salt.exceptions import SaltCloudConfigError # Get logging started log = logging.getLogger(__name__) def _get_client(): """ Return cloud client """ client = salt.cloud.CloudClient( os.path.join(os.path.dirname(__opts__["conf_file"]), "cloud") ) return client def list_sizes(provider="all"): """ List cloud provider sizes for the given providers """ client = _get_client() sizes = client.list_sizes(provider) return sizes def list_images(provider="all"): """ List cloud provider images for the given providers """ client = _get_client() images = client.list_images(provider) return images def list_locations(provider="all"): """ List cloud provider sizes for the given providers """ client = _get_client() locations = client.list_locations(provider) return locations def query(query_type="list_nodes"): """ List cloud provider data for all providers """ client = _get_client() info = client.query(query_type) return info def full_query(query_type="list_nodes_full"): """ List all available cloud provider data """ client = _get_client() info = client.full_query(query_type) return info def select_query(query_type="list_nodes_select"): """ List selected nodes """ client = _get_client() info = client.select_query(query_type) return info def profile(prof=None, instances=None, opts=None, **kwargs): """ Create a cloud vm with the given profile and instances, instances can be a list or comma-delimited string CLI Example: .. code-block:: bash salt-run cloud.profile prof=my-ec2 instances=node1,node2,node3 """ if prof is None and "profile" in kwargs: prof = kwargs["profile"] if prof is None: return {"Error": "A profile (or prof) must be defined"} if instances is None and "names" in kwargs: instances = kwargs["names"] if instances is None: return {"Error": "One or more instances (comma-delimited) must be set"} client = _get_client() if isinstance(opts, dict): client.opts.update(opts) info = client.profile(prof, instances, **salt.utils.args.clean_kwargs(**kwargs)) return info def map_run(path=None, opts=None, **kwargs): """ Execute a salt cloud map file """ client = _get_client() if isinstance(opts, dict): client.opts.update(opts) info = client.map_run(path, **salt.utils.args.clean_kwargs(**kwargs)) return info def destroy(instances, opts=None): """ Destroy the named vm(s) """ client = _get_client() if isinstance(opts, dict): client.opts.update(opts) info = client.destroy(instances) return info def action( func=None, cloudmap=None, instances=None, provider=None, instance=None, opts=None, **kwargs ): """ Execute a single action on the given map/provider/instance CLI Example: .. code-block:: bash salt-run cloud.action start my-salt-vm """ info = {} client = _get_client() if isinstance(opts, dict): client.opts.update(opts) try: info = client.action( func, cloudmap, instances, provider, instance, salt.utils.args.clean_kwargs(**kwargs), ) except SaltCloudConfigError as err: log.error(err) return info def create(provider, instances, opts=None, **kwargs): """ Create an instance using Salt Cloud CLI Example: .. code-block:: bash salt-run cloud.create my-ec2-config myinstance \\ image=ami-1624987f size='t1.micro' ssh_username=ec2-user \\ securitygroup=default delvol_on_destroy=True """ client = _get_client() if isinstance(opts, dict): client.opts.update(opts) info = client.create(provider, instances, **salt.utils.args.clean_kwargs(**kwargs)) return info