saltstack/salt

View on GitHub
salt/utils/cloud.py

Summary

Maintainability
F
1 mo
Test Coverage

File cloud.py has 2764 lines of code (exceeds 250 allowed). Consider refactoring.
Open

# -*- coding: utf-8 -*-
'''
Utility functions for salt.cloud
'''

Severity: Major
Found in salt/utils/cloud.py - About 1 wk to fix

    Function deploy_script has a Cognitive Complexity of 269 (exceeds 5 allowed). Consider refactoring.
    Open

    def deploy_script(host,
                      port=22,
                      timeout=900,
                      username='root',
                      password=None,
    Severity: Minor
    Found in salt/utils/cloud.py - About 5 days to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in function deploy_script. (82)
    Open

    def deploy_script(host,
                      port=22,
                      timeout=900,
                      username='root',
                      password=None,
    Severity: Minor
    Found in salt/utils/cloud.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function deploy_windows has a Cognitive Complexity of 50 (exceeds 5 allowed). Consider refactoring.
    Open

    def deploy_windows(host,
                       port=445,
                       timeout=900,
                       username='Administrator',
                       password=None,
    Severity: Minor
    Found in salt/utils/cloud.py - About 7 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function bootstrap has a Cognitive Complexity of 43 (exceeds 5 allowed). Consider refactoring.
    Open

    def bootstrap(vm_, opts=None):
        '''
        This is the primary entry point for logging into any system (POSIX or
        Windows) to install Salt. It will make the decision on its own as to which
        deploy function to call.
    Severity: Minor
    Found in salt/utils/cloud.py - About 6 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function wait_for_port has a Cognitive Complexity of 39 (exceeds 5 allowed). Consider refactoring.
    Open

    def wait_for_port(host, port=22, timeout=900, gateway=None):
        '''
        Wait until a connection to the specified port can be made on a specified
        host. This is usually port 22 (for SSH), but in the case of Windows
        installations, it might be port 445 (for psexec). It may also be an
    Severity: Minor
    Found in salt/utils/cloud.py - About 5 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function update_bootstrap has a Cognitive Complexity of 36 (exceeds 5 allowed). Consider refactoring.
    Open

    def update_bootstrap(config, url=None):
        '''
        Update the salt-bootstrap script
    
        url can be one of:
    Severity: Minor
    Found in salt/utils/cloud.py - About 5 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in function bootstrap. (35)
    Open

    def bootstrap(vm_, opts=None):
        '''
        This is the primary entry point for logging into any system (POSIX or
        Windows) to install Salt. It will make the decision on its own as to which
        deploy function to call.
    Severity: Minor
    Found in salt/utils/cloud.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function sftp_file has a Cognitive Complexity of 25 (exceeds 5 allowed). Consider refactoring.
    Open

    def sftp_file(dest_path, contents=None, kwargs=None, local_file=None):
        '''
        Use sftp to upload a file to a server
        '''
        put_args = []
    Severity: Minor
    Found in salt/utils/cloud.py - About 3 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in function deploy_windows. (28)
    Open

    def deploy_windows(host,
                       port=445,
                       timeout=900,
                       username='Administrator',
                       password=None,
    Severity: Minor
    Found in salt/utils/cloud.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function wait_for_passwd has a Cognitive Complexity of 21 (exceeds 5 allowed). Consider refactoring.
    Open

    def wait_for_passwd(host, port=22, ssh_timeout=15, username='root',
                        password=None, key_filename=None, maxtries=15,
                        trysleep=1, display_ssh_output=True, gateway=None,
                        known_hosts_file='/dev/null', hard_timeout=None):
        '''
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function scp_file has a Cognitive Complexity of 21 (exceeds 5 allowed). Consider refactoring.
    Open

    def scp_file(dest_path, contents=None, kwargs=None, local_file=None):
        '''
        Use scp or sftp to copy a file to a server
        '''
        file_to_upload = None
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function run_inline_script has a Cognitive Complexity of 21 (exceeds 5 allowed). Consider refactoring.
    Open

    def run_inline_script(host,
                          name=None,
                          port=22,
                          timeout=900,
                          username='root',
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function wait_for_winrm has a Cognitive Complexity of 18 (exceeds 5 allowed). Consider refactoring.
    Open

    def wait_for_winrm(host, port, username, password, timeout=900, use_ssl=True, verify=True):
        '''
        Wait until WinRM connection can be established.
        '''
        # Ensure the winrm service is listening before attempting to connect
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Cyclomatic complexity is too high in function update_bootstrap. (24)
    Open

    def update_bootstrap(config, url=None):
        '''
        Update the salt-bootstrap script
    
        url can be one of:
    Severity: Minor
    Found in salt/utils/cloud.py by radon

    Cyclomatic Complexity

    Cyclomatic Complexity corresponds to the number of decisions a block of code contains plus 1. This number (also called McCabe number) is equal to the number of linearly independent paths through the code. This number can be used as a guide when testing conditional logic in blocks.

    Radon analyzes the AST tree of a Python program to compute Cyclomatic Complexity. Statements have the following effects on Cyclomatic Complexity:

    Construct Effect on CC Reasoning
    if +1 An if statement is a single decision.
    elif +1 The elif statement adds another decision.
    else +0 The else statement does not cause a new decision. The decision is at the if.
    for +1 There is a decision at the start of the loop.
    while +1 There is a decision at the while statement.
    except +1 Each except branch adds a new conditional path of execution.
    finally +0 The finally block is unconditionally executed.
    with +1 The with statement roughly corresponds to a try/except block (see PEP 343 for details).
    assert +1 The assert statement internally roughly equals a conditional statement.
    Comprehension +1 A list/set/dict comprehension of generator expression is equivalent to a for loop.
    Boolean Operator +1 Every boolean operator (and, or) adds a decision point.

    Source: http://radon.readthedocs.org/en/latest/intro.html

    Function list_cache_nodes_full has a Cognitive Complexity of 17 (exceeds 5 allowed). Consider refactoring.
    Open

    def list_cache_nodes_full(opts=None, provider=None, base=None):
        '''
        Return a list of minion data from the cloud cache, rather from the cloud
        providers themselves. This is the cloud cache version of list_nodes_full().
        '''
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function wait_for_ip has a Cognitive Complexity of 16 (exceeds 5 allowed). Consider refactoring.
    Open

    def wait_for_ip(update_callback,
                    update_args=None,
                    update_kwargs=None,
                    timeout=5 * 60,
                    interval=5,
    Severity: Minor
    Found in salt/utils/cloud.py - About 2 hrs to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function run_func_until_ret_arg has a Cognitive Complexity of 15 (exceeds 5 allowed). Consider refactoring.
    Open

    def run_func_until_ret_arg(fun, kwargs, fun_call=None,
                               argument_being_watched=None, required_argument_response=None):
        '''
        Waits until the function retrieves some required argument.
        NOTE: Tested with ec2 describe_volumes and describe_snapshots only.
    Severity: Minor
    Found in salt/utils/cloud.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function _exec_ssh_cmd has a Cognitive Complexity of 14 (exceeds 5 allowed). Consider refactoring.
    Open

    def _exec_ssh_cmd(cmd, error_msg=None, allow_failure=False, **kwargs):
        if error_msg is None:
            error_msg = 'A wrong password has been issued while establishing ssh session.'
        password_retries = kwargs.get('password_retries', 3)
        try:
    Severity: Minor
    Found in salt/utils/cloud.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function remove_service has a Cognitive Complexity of 12 (exceeds 5 allowed). Consider refactoring.
    Open

        def remove_service(self, wait_timeout=10, sleep_wait=1):
            '''
            Removes the PAExec service and executable that was created as part of
            the create_service function. This does not remove any older executables
            or services from previous runs, use cleanup() instead for that purpose.
    Severity: Minor
    Found in salt/utils/cloud.py - About 1 hr to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Function bootstrap has 34 lines of code (exceeds 25 allowed). Consider refactoring.
    Open

    def bootstrap(vm_, opts=None):
        '''
        This is the primary entry point for logging into any system (POSIX or
        Windows) to install Salt. It will make the decision on its own as to which
        deploy function to call.
    Severity: Minor
    Found in salt/utils/cloud.py - About 1 hr to fix

      Function root_cmd has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
      Open

      def root_cmd(command, tty, sudo, allow_failure=False, **kwargs):
          '''
          Wrapper for commands to be run as root
          '''
          logging_command = command
      Severity: Minor
      Found in salt/utils/cloud.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function userdata_template has a Cognitive Complexity of 10 (exceeds 5 allowed). Consider refactoring.
      Open

      def userdata_template(opts, vm_, userdata):
          '''
          Use the configured templating engine to template the userdata file
          '''
          # No userdata, no need to template anything
      Severity: Minor
      Found in salt/utils/cloud.py - About 1 hr to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function remove_sshkey has a Cognitive Complexity of 9 (exceeds 5 allowed). Consider refactoring.
      Open

      def remove_sshkey(host, known_hosts=None):
          '''
          Remove a host from the known_hosts file
          '''
          if known_hosts is None:
      Severity: Minor
      Found in salt/utils/cloud.py - About 55 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function os_script has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
      Open

      def os_script(os_, vm_=None, opts=None, minion=''):
          '''
          Return the script as a string for the specific os
          '''
          if minion:
      Severity: Minor
      Found in salt/utils/cloud.py - About 45 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Function wait_for_psexecsvc has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
      Open

      def wait_for_psexecsvc(host, port, username, password, timeout=900):
          '''
          Wait until psexec connection can be established.
          '''
          if has_winexe() and not HAS_PSEXEC:
      Severity: Minor
      Found in salt/utils/cloud.py - About 45 mins to fix

      Cognitive Complexity

      Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

      A method's cognitive complexity is based on a few simple rules:

      • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
      • Code is considered more complex for each "break in the linear flow of the code"
      • Code is considered more complex when "flow breaking structures are nested"

      Further reading

      Avoid deeply nested control flow statements.
      Open

                          if script_env:
                              root_cmd(
                                  'rm -f \'{0}/environ-deploy-wrapper.sh\''.format(
                                      tmp_dir
                                  ),
      Severity: Major
      Found in salt/utils/cloud.py - About 45 mins to fix

        Avoid deeply nested control flow statements.
        Open

                            if ret:
                                raise SaltCloudSystemExit(
                                    'Can\'t set ownership for {0}'.format(
                                        preseed_minion_keys_tempdir))
        
        
        Severity: Major
        Found in salt/utils/cloud.py - About 45 mins to fix

          Avoid deeply nested control flow statements.
          Open

                              if keep_tmp is True:
                                  deploy_command += ' -K'
                              if preseed_minion_keys is not None:
          Severity: Major
          Found in salt/utils/cloud.py - About 45 mins to fix

            Avoid deeply nested control flow statements.
            Open

                                if make_syndic is True:
                                    deploy_command += ' -S'
                                if make_master is True:
            Severity: Major
            Found in salt/utils/cloud.py - About 45 mins to fix

              Avoid deeply nested control flow statements.
              Open

                                  if not isinstance(script_env, dict):
                                      raise SaltCloudSystemExit(
                                          'The \'script_env\' configuration setting NEEDS '
                                          'to be a dictionary not a {0}'.format(
                                              type(script_env)
              Severity: Major
              Found in salt/utils/cloud.py - About 45 mins to fix

                Avoid deeply nested control flow statements.
                Open

                                    for key, value in six.iteritems(script_env):
                                        environ_script_contents.append(
                                            'setenv {0} \'{1}\' >/dev/null 2>&1 || '
                                            'export {0}=\'{1}\''.format(key, value)
                                        )
                Severity: Major
                Found in salt/utils/cloud.py - About 45 mins to fix

                  Avoid deeply nested control flow statements.
                  Open

                                      for k, v in six.iteritems(d0):
                                          r_set[k] = v
                          status = _unwrap_dict(r_set, argument_being_watched)
                  Severity: Major
                  Found in salt/utils/cloud.py - About 45 mins to fix

                    Function list_nodes_select has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                    Open

                    def list_nodes_select(nodes, selection, call=None):
                        '''
                        Return a list of the VMs that are on the provider, with select fields
                        '''
                        if call == 'action':
                    Severity: Minor
                    Found in salt/utils/cloud.py - About 45 mins to fix

                    Cognitive Complexity

                    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                    A method's cognitive complexity is based on a few simple rules:

                    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                    • Code is considered more complex for each "break in the linear flow of the code"
                    • Code is considered more complex when "flow breaking structures are nested"

                    Further reading

                    Avoid deeply nested control flow statements.
                    Open

                                        if force_minion_config:
                                            deploy_command += ' -F'
                                        if make_syndic is True:
                    Severity: Major
                    Found in salt/utils/cloud.py - About 45 mins to fix

                      Avoid deeply nested control flow statements.
                      Open

                                          if preseed_minion_keys is not None:
                                              deploy_command += ' -k \'{0}\''.format(
                                                  preseed_minion_keys_tempdir
                                              )
                                      if script_args:
                      Severity: Major
                      Found in salt/utils/cloud.py - About 45 mins to fix

                        Avoid deeply nested control flow statements.
                        Open

                                            if make_minion is False:
                                                deploy_command += ' -N'
                                            if keep_tmp is True:
                        Severity: Major
                        Found in salt/utils/cloud.py - About 45 mins to fix

                          Avoid deeply nested control flow statements.
                          Open

                                              if len(comps) > 1 or comps[0] != 'tmp':
                                                  ret = root_cmd(
                                                      'chown {0} "{1}"'.format(username, tmp_dir),
                                                      tty, sudo, **ssh_kwargs
                                                  )
                          Severity: Major
                          Found in salt/utils/cloud.py - About 45 mins to fix

                            Function filter_event has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                            Open

                            def filter_event(tag, data, defaults):
                                '''
                                Accept a tag, a dict and a list of default keys to return from the dict, and
                                check them against the cloud configuration for that tag
                                '''
                            Severity: Minor
                            Found in salt/utils/cloud.py - About 45 mins to fix

                            Cognitive Complexity

                            Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                            A method's cognitive complexity is based on a few simple rules:

                            • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                            • Code is considered more complex for each "break in the linear flow of the code"
                            • Code is considered more complex when "flow breaking structures are nested"

                            Further reading

                            Avoid deeply nested control flow statements.
                            Open

                                                if ret:
                                                    log.info('[%s] Output: %s', cmd_line, ret)
                            
                                # TODO: ensure we send the correct return value
                                return True
                            Severity: Major
                            Found in salt/utils/cloud.py - About 45 mins to fix

                              Function missing_node_cache has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
                              Open

                              def missing_node_cache(prov_dir, node_list, provider, opts):
                                  '''
                                  Check list of nodes to see if any nodes which were previously known about
                                  in the cache have been removed from the node list.
                              
                              
                              Severity: Minor
                              Found in salt/utils/cloud.py - About 45 mins to fix

                              Cognitive Complexity

                              Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                              A method's cognitive complexity is based on a few simple rules:

                              • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                              • Code is considered more complex for each "break in the linear flow of the code"
                              • Code is considered more complex when "flow breaking structures are nested"

                              Further reading

                              Avoid deeply nested control flow statements.
                              Open

                                                  if ssh_kwargs['username'] != 'root':
                                                      root_cmd(
                                                          'chown {0} \'{1}\''.format(
                                                              ssh_kwargs['username'], remote_dir
                                                          ),
                              Severity: Major
                              Found in salt/utils/cloud.py - About 45 mins to fix

                                Avoid deeply nested control flow statements.
                                Open

                                                    if make_master is True:
                                                        deploy_command += ' -M'
                                                    if make_minion is False:
                                Severity: Major
                                Found in salt/utils/cloud.py - About 45 mins to fix

                                  Function wait_for_winexe has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  def wait_for_winexe(host, port, username, password, timeout=900):
                                      '''
                                      Wait until winexe connection can be established.
                                      '''
                                      start = time.time()
                                  Severity: Minor
                                  Found in salt/utils/cloud.py - About 35 mins to fix

                                  Cognitive Complexity

                                  Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                  A method's cognitive complexity is based on a few simple rules:

                                  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                  • Code is considered more complex for each "break in the linear flow of the code"
                                  • Code is considered more complex when "flow breaking structures are nested"

                                  Further reading

                                  Function wait_for_fun has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  def wait_for_fun(fun, timeout=900, **kwargs):
                                      '''
                                      Wait until a function finishes, or times out
                                      '''
                                      start = time.time()
                                  Severity: Minor
                                  Found in salt/utils/cloud.py - About 35 mins to fix

                                  Cognitive Complexity

                                  Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                  A method's cognitive complexity is based on a few simple rules:

                                  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                  • Code is considered more complex for each "break in the linear flow of the code"
                                  • Code is considered more complex when "flow breaking structures are nested"

                                  Further reading

                                  Function is_public_ip has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  def is_public_ip(ip):
                                      '''
                                      Determines whether an IP address falls within one of the private IP ranges
                                      '''
                                      if ':' in ip:
                                  Severity: Minor
                                  Found in salt/utils/cloud.py - About 35 mins to fix

                                  Cognitive Complexity

                                  Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                  A method's cognitive complexity is based on a few simple rules:

                                  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                  • Code is considered more complex for each "break in the linear flow of the code"
                                  • Code is considered more complex when "flow breaking structures are nested"

                                  Further reading

                                  Function lock_file has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  def lock_file(filename, interval=.5, timeout=15):
                                      '''
                                      Lock a file; if it is already locked, then wait for it to become available
                                      before locking it.
                                  
                                  
                                  Severity: Minor
                                  Found in salt/utils/cloud.py - About 35 mins to fix

                                  Cognitive Complexity

                                  Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                  A method's cognitive complexity is based on a few simple rules:

                                  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                  • Code is considered more complex for each "break in the linear flow of the code"
                                  • Code is considered more complex when "flow breaking structures are nested"

                                  Further reading

                                  Function store_password_in_keyring has a Cognitive Complexity of 7 (exceeds 5 allowed). Consider refactoring.
                                  Open

                                  def store_password_in_keyring(credential_id, username, password=None):
                                      '''
                                      Interactively prompts user for a password and stores it in system keyring
                                      '''
                                      try:
                                  Severity: Minor
                                  Found in salt/utils/cloud.py - About 35 mins to fix

                                  Cognitive Complexity

                                  Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                  A method's cognitive complexity is based on a few simple rules:

                                  • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                  • Code is considered more complex for each "break in the linear flow of the code"
                                  • Code is considered more complex when "flow breaking structures are nested"

                                  Further reading

                                  Avoid too many return statements within this function.
                                  Open

                                      return True
                                  Severity: Major
                                  Found in salt/utils/cloud.py - About 30 mins to fix

                                    Avoid too many return statements within this function.
                                    Open

                                                    return False
                                    Severity: Major
                                    Found in salt/utils/cloud.py - About 30 mins to fix

                                      Avoid too many return statements within this function.
                                      Open

                                              return True
                                      Severity: Major
                                      Found in salt/utils/cloud.py - About 30 mins to fix

                                        Avoid too many return statements within this function.
                                        Open

                                                return False
                                        Severity: Major
                                        Found in salt/utils/cloud.py - About 30 mins to fix

                                          Avoid too many return statements within this function.
                                          Open

                                              return False
                                          Severity: Major
                                          Found in salt/utils/cloud.py - About 30 mins to fix

                                            Avoid too many return statements within this function.
                                            Open

                                                return ''
                                            Severity: Major
                                            Found in salt/utils/cloud.py - About 30 mins to fix

                                              Avoid too many return statements within this function.
                                              Open

                                                      return False
                                              Severity: Major
                                              Found in salt/utils/cloud.py - About 30 mins to fix

                                                Function accept_key has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def accept_key(pki_dir, pub, id_):
                                                    '''
                                                    If the master config was available then we will have a pki_dir key in
                                                    the opts directory, this method places the pub key in the accepted
                                                    keys dir and removes it from the unaccepted keys dir if that is the case.
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Function request_minion_cachedir has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def request_minion_cachedir(
                                                        minion_id,
                                                        opts=None,
                                                        fingerprint='',
                                                        pubkey=None,
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Function delete_minion_cachedir has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def delete_minion_cachedir(minion_id, provider, opts, base=None):
                                                    '''
                                                    Deletes a minion's entry from the cloud cachedir. It will search through
                                                    all cachedirs to find the minion's cache file.
                                                    Needs `update_cachedir` set to True.
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Function cachedir_index_del has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def cachedir_index_del(minion_id, base=None):
                                                    '''
                                                    Delete an entry from the cachedir index. This generally only needs to happen
                                                    when an instance is deleted.
                                                    '''
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Function cache_node_list has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def cache_node_list(nodes, provider, opts):
                                                    '''
                                                    If configured to do so, update the cloud cachedir with the current list of
                                                    nodes. Also fires configured events pertaining to the node list.
                                                
                                                
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Function diff_node_cache has a Cognitive Complexity of 6 (exceeds 5 allowed). Consider refactoring.
                                                Open

                                                def diff_node_cache(prov_dir, node, new_data, opts):
                                                    '''
                                                    Check new node data against current cache. If data differ, fire an event
                                                    which consists of the new node data.
                                                
                                                
                                                Severity: Minor
                                                Found in salt/utils/cloud.py - About 25 mins to fix

                                                Cognitive Complexity

                                                Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

                                                A method's cognitive complexity is based on a few simple rules:

                                                • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
                                                • Code is considered more complex for each "break in the linear flow of the code"
                                                • Code is considered more complex when "flow breaking structures are nested"

                                                Further reading

                                                Similar blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                def wait_for_ip(update_callback,
                                                                update_args=None,
                                                                update_kwargs=None,
                                                                timeout=5 * 60,
                                                                interval=5,
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 2 days to fix
                                                salt/cloud/clouds/ec2.py on lines 466..538

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 275.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Identical blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                        try:
                                                            if socket.inet_pton(socket.AF_INET6, kwargs['hostname']):
                                                                ipaddr = '[{0}]'.format(kwargs['hostname'])
                                                            else:
                                                                ipaddr = kwargs['hostname']
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 3 hrs to fix
                                                salt/utils/cloud.py on lines 2128..2134

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 68.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Identical blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                        try:
                                                            if socket.inet_pton(socket.AF_INET6, kwargs['hostname']):
                                                                ipaddr = '[{0}]'.format(kwargs['hostname'])
                                                            else:
                                                                ipaddr = kwargs['hostname']
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 3 hrs to fix
                                                salt/utils/cloud.py on lines 2235..2241

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 68.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Identical blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                    try:
                                                        if contents is not None:
                                                            try:
                                                                tmpfd, file_to_upload = tempfile.mkstemp()
                                                                os.write(tmpfd, contents)
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 2 hrs to fix
                                                salt/utils/cloud.py on lines 2184..2262

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 55.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Identical blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                    try:
                                                        if contents is not None:
                                                            try:
                                                                tmpfd, file_to_upload = tempfile.mkstemp()
                                                                if isinstance(contents, six.string_types):
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 2 hrs to fix
                                                salt/utils/cloud.py on lines 2079..2160

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 55.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                        fire_event(
                                                            'event',
                                                            'new node found',
                                                            'salt/cloud/{0}/cache_node_new'.format(node),
                                                            args={'new_data': event_data},
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 2 hrs to fix
                                                salt/utils/cloud.py on lines 3081..3090

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 58.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                            if 'diff_cache_events' in opts and opts['diff_cache_events']:
                                                                fire_event(
                                                                    'event',
                                                                    'cached node missing from provider',
                                                                    'salt/cloud/{0}/cache_node_missing'.format(node),
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 1 other location - About 2 hrs to fix
                                                salt/utils/cloud.py on lines 3118..3126

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 58.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 3 locations. Consider refactoring.
                                                Open

                                                            if script:
                                                                # got strange escaping issues with sudoer, going onto a
                                                                # subshell fixes that
                                                                ssh_file(opts, '{0}/deploy.sh'.format(tmp_dir), script, ssh_kwargs)
                                                                ret = root_cmd(
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 2 other locations - About 1 hr to fix
                                                salt/utils/cloud.py on lines 1572..1578
                                                salt/utils/cloud.py on lines 1612..1618

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 56.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 3 locations. Consider refactoring.
                                                Open

                                                            if minion_pem:
                                                                ssh_file(opts, '{0}/minion.pem'.format(tmp_dir), minion_pem, ssh_kwargs)
                                                                ret = root_cmd('chmod 600 \'{0}/minion.pem\''.format(tmp_dir),
                                                                               tty, sudo, **ssh_kwargs)
                                                                if ret:
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 2 other locations - About 1 hr to fix
                                                salt/utils/cloud.py on lines 1612..1618
                                                salt/utils/cloud.py on lines 1697..1707

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 56.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 3 locations. Consider refactoring.
                                                Open

                                                            if master_pem:
                                                                ssh_file(opts, '{0}/master.pem'.format(tmp_dir), master_pem, ssh_kwargs)
                                                                ret = root_cmd('chmod 600 \'{0}/master.pem\''.format(tmp_dir),
                                                                               tty, sudo, **ssh_kwargs)
                                                                if ret:
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 2 other locations - About 1 hr to fix
                                                salt/utils/cloud.py on lines 1572..1578
                                                salt/utils/cloud.py on lines 1697..1707

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 56.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 6 locations. Consider refactoring.
                                                Open

                                                    if 'error' in nodes:
                                                        raise SaltCloudSystemExit(
                                                            'An error occurred while listing nodes: {0}'.format(
                                                                nodes['error']['Errors']['Error']['Message']
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 5 other locations - About 1 hr to fix
                                                salt/cloud/clouds/ec2.py on lines 3629..3632
                                                salt/cloud/clouds/ec2.py on lines 3660..3663
                                                salt/cloud/clouds/ec2.py on lines 3692..3695
                                                salt/cloud/clouds/softlayer.py on lines 556..559
                                                salt/cloud/clouds/softlayer_hw.py on lines 460..463

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 47.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 8 locations. Consider refactoring.
                                                Open

                                                    if key_filename is not None and not os.path.isfile(key_filename):
                                                        raise SaltCloudConfigError(
                                                            'The defined key_filename \'{0}\' does not exist'.format(
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 7 other locations - About 30 mins to fix
                                                salt/cloud/clouds/digitalocean.py on lines 327..329
                                                salt/cloud/clouds/libvirt.py on lines 321..323
                                                salt/cloud/clouds/nova.py on lines 952..954
                                                salt/cloud/clouds/opennebula.py on lines 1125..1127
                                                salt/cloud/clouds/openstack.py on lines 675..677
                                                salt/cloud/clouds/scaleway.py on lines 223..225
                                                salt/utils/cloud.py on lines 414..416

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 40.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 8 locations. Consider refactoring.
                                                Open

                                                    if key_filename is not None and not os.path.isfile(key_filename):
                                                        raise SaltCloudConfigError(
                                                            'The defined ssh_keyfile \'{0}\' does not exist'.format(
                                                Severity: Major
                                                Found in salt/utils/cloud.py and 7 other locations - About 30 mins to fix
                                                salt/cloud/clouds/digitalocean.py on lines 327..329
                                                salt/cloud/clouds/libvirt.py on lines 321..323
                                                salt/cloud/clouds/nova.py on lines 952..954
                                                salt/cloud/clouds/opennebula.py on lines 1125..1127
                                                salt/cloud/clouds/openstack.py on lines 675..677
                                                salt/cloud/clouds/scaleway.py on lines 223..225
                                                salt/utils/cloud.py on lines 1463..1465

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 40.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                                if ssh_kwargs['username'] != 'root':
                                                                    root_cmd(
                                                                        'chown {0} \'{1}\''.format(
                                                                            ssh_kwargs['username'], preseed_minion_keys_tempdir
                                                                        ),
                                                Severity: Minor
                                                Found in salt/utils/cloud.py and 1 other location - About 30 mins to fix
                                                salt/utils/cloud.py on lines 1558..1563

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 40.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                Similar blocks of code found in 2 locations. Consider refactoring.
                                                Open

                                                                    if ssh_kwargs['username'] != 'root':
                                                                        root_cmd(
                                                                            'chown {0} \'{1}\''.format(
                                                                                ssh_kwargs['username'], remote_dir
                                                                            ),
                                                Severity: Minor
                                                Found in salt/utils/cloud.py and 1 other location - About 30 mins to fix
                                                salt/utils/cloud.py on lines 1660..1665

                                                Duplicated Code

                                                Duplicated code can lead to software that is hard to understand and difficult to change. The Don't Repeat Yourself (DRY) principle states:

                                                Every piece of knowledge must have a single, unambiguous, authoritative representation within a system.

                                                When you violate DRY, bugs and maintenance problems are sure to follow. Duplicated code has a tendency to both continue to replicate and also to diverge (leaving bugs as two similar implementations differ in subtle ways).

                                                Tuning

                                                This issue has a mass of 40.

                                                We set useful threshold defaults for the languages we support but you may want to adjust these settings based on your project guidelines.

                                                The threshold configuration represents the minimum mass a code block must have to be analyzed for duplication. The lower the threshold, the more fine-grained the comparison.

                                                If the engine is too easily reporting duplication, try raising the threshold. If you suspect that the engine isn't catching enough duplication, try lowering the threshold. The best setting tends to differ from language to language.

                                                See codeclimate-duplication's documentation for more information about tuning the mass threshold in your .codeclimate.yml.

                                                Refactorings

                                                Further Reading

                                                There are no issues that match your filters.

                                                Category
                                                Status