Example #1
0
  def action_create(self):
    path = self.resource.path

    if sudo.path_lexists(path):
      oldpath = os.path.realpath(path)
      if oldpath == self.resource.to:
        return
      if not sudo.path_lexists(path):
        raise Fail(
          "%s trying to create a symlink with the same name as an existing file or directory" % self.resource)
      Logger.info("%s replacing old symlink to %s" % (self.resource, oldpath))
      sudo.unlink(path)
      
    if self.resource.hard:
      if not sudo.path_exists(self.resource.to):
        raise Fail("Failed to apply %s, linking to nonexistent location %s" % (self.resource, self.resource.to))
      if sudo.path_isdir(self.resource.to):
        raise Fail("Failed to apply %s, cannot create hard link to a directory (%s)" % (self.resource, self.resource.to))
      
      Logger.info("Creating hard %s" % self.resource)
      sudo.link(self.resource.to, path)
    else:
      if not sudo.path_exists(self.resource.to):
        Logger.info("Warning: linking to nonexistent location %s" % self.resource.to)
        
      Logger.info("Creating symbolic %s to %s" % (self.resource, self.resource.to))
      sudo.symlink(self.resource.to, path)
Example #2
0
    def action_create(self):
        path = self.resource.path

        if sudo.path_lexists(path):
            oldpath = os.path.realpath(path)
            if oldpath == self.resource.to:
                return
            if not sudo.path_lexists(path):
                raise Fail(
                    "%s trying to create a symlink with the same name as an existing file or directory"
                    % self.resource)
            Logger.info("%s replacing old symlink to %s" %
                        (self.resource, oldpath))
            sudo.unlink(path)

        if self.resource.hard:
            if not sudo.path_exists(self.resource.to):
                raise Fail(
                    "Failed to apply %s, linking to nonexistent location %s" %
                    (self.resource, self.resource.to))
            if sudo.path_isdir(self.resource.to):
                raise Fail(
                    "Failed to apply %s, cannot create hard link to a directory (%s)"
                    % (self.resource, self.resource.to))

            Logger.info("Creating hard %s" % self.resource)
            sudo.link(self.resource.to, path)
        else:
            if not sudo.path_exists(self.resource.to):
                Logger.info("Warning: linking to nonexistent location %s" %
                            self.resource.to)

            Logger.info("Creating symbolic %s to %s" %
                        (self.resource, self.resource.to))
            sudo.symlink(self.resource.to, path)
Example #3
0
 def invalidate_ca_server(self, env):
     import params
     ca_json = os.path.join(params.nifi_config_dir,
                            'nifi-certificate-authority.json')
     nifi_toolkit_util_common.move_store(
         nifi_toolkit_util_common.load(ca_json), 'keyStore')
     unlink(ca_json)
Example #4
0
def remove_symlinks(stack_location, service_definitions_location,
                    staged_mpack_dir):
    """
  Helper function to remove all symbolic links pointed to a management pack
  :param stack_location: Path to stacks folder
                         (/var/lib/ambari-server/resources/stacks)
  :param service_definitions_location: Path to service_definitions folder
                                      (/var/lib/ambari-server/resources/common-services)
  :param staged_mpack_dir: Path to management pack staging location
                           (/var/lib/ambari-server/resources/mpacks/mpack_name-mpack_version)
  """
    for location in [stack_location, service_definitions_location]:
        for root, dirs, files in os.walk(location):
            for name in files:
                file = os.path.join(root, name)
                if os.path.islink(
                        file) and staged_mpack_dir in os.path.realpath(file):
                    print_info_msg("Removing symlink {0}".format(file))
                    sudo.unlink(file)
            for name in dirs:
                dir = os.path.join(root, name)
                if os.path.islink(
                        dir) and staged_mpack_dir in os.path.realpath(dir):
                    print_info_msg("Removing symlink {0}".format(dir))
                    sudo.unlink(dir)
Example #5
0
def process_stack_definition_artifact(artifact, artifact_source_dir, options):
    """
  Process stack-definition artifact
  :param artifact: Artifact metadata
  :param artifact_source_dir: Location of artifact in the management pack
  :param options: Command line options
  """
    # Get ambari mpack properties
    stack_location, service_definitions_location, mpacks_staging_location = get_mpack_properties(
    )
    stack_name = None
    if "stack_name" in artifact:
        stack_name = artifact.stack_name
    if not stack_name:
        print_error_msg(
            "Must provide stack name for stack-definition artifact!")
        raise FatalException(
            -1, 'Must provide stack name for stack-definition artifact!')
    stack_version = None
    if "stack_version" in artifact:
        stack_version = artifact.stack_version
    if not stack_version:
        print_error_msg(
            "Must provide stack version for stack-definition artifact!")
        raise FatalException(
            -1, 'Must provide stack version for stack-definition artifact!')
    dest_link = os.path.join(stack_location, stack_name, stack_version)
    if options.force and os.path.islink(dest_link):
        sudo.unlink(dest_link)
    sudo.symlink(artifact_source_dir, dest_link)
Example #6
0
def process_stack_extension_definition_artifact(artifact, artifact_source_dir, options):
  """
  Process stack-extension-definition artifact
  :param artifact: Artifact metadata
  :param artifact_source_dir: Location of artifact in the management pack
  :param options: Command line options
  """
  # Get ambari mpack properties
  stack_location, service_definitions_location, mpacks_staging_location = get_mpack_properties()
  service_name = None
  if "service_name" in artifact:
    service_name = artifact.service_name
  if not service_name:
    print_error_msg("Must provide service name for stack-extension-definition artifact!")
    raise FatalException(-1, 'Must provide service name for stack-extension-definition artifact!')
  applicable_stacks = None
  if "applicable_stacks" in artifact:
    applicable_stacks = artifact.applicable_stacks
  if not applicable_stacks:
    print_error_msg("Must provide applicable stacks for stack-extension-definition artifact!")
    raise FatalException(-1, 'Must provide applicable stacks for stack-extension-definition artifact!')
  for applicable_stack in applicable_stacks:
    stack_name = applicable_stack.stack_name
    stack_version = applicable_stack.stack_version
    dest_stack_path = os.path.join(stack_location, stack_name)
    dest_stack_version_path = os.path.join(dest_stack_path, stack_version)
    dest_stack_services_path = os.path.join(dest_stack_version_path, "services")
    dest_link = os.path.join(dest_stack_services_path, service_name)
    if os.path.exists(dest_stack_path) and os.path.exists(dest_stack_version_path):
      if not os.path.exists(dest_stack_services_path):
        sudo.makedir(dest_stack_services_path, 0755)
      if options.force and os.path.islink(dest_link):
        sudo.unlink(dest_link)
      sudo.symlink(artifact_source_dir, dest_link)
Example #7
0
    def stop(self, env, upgrade_type=None):
        import params
        import status_params
        env.set_params(params)
        env.set_params(status_params)

        # this method will be called during an upgrade before start/configure get to setup all the permissions so we need to do it here too
        Directory([params.bin_dir],
                  owner=params.nifi_registry_user,
                  group=params.nifi_registry_group,
                  create_parents=True,
                  recursive_ownership=True,
                  cd_access='a')

        env_content = InlineTemplate(params.nifi_registry_env_content)
        File(format("{params.bin_dir}/nifi-registry-env.sh"),
             content=env_content,
             owner=params.nifi_registry_user,
             group=params.nifi_registry_group,
             mode=0755)

        Execute('export JAVA_HOME=' + params.jdk64_home + ';' +
                params.bin_dir + '/nifi-registry.sh stop >> ' +
                params.nifi_registry_log_file,
                user=params.nifi_registry_user)
        if os.path.isfile(status_params.nifi_registry_pid_file):
            sudo.unlink(status_params.nifi_registry_pid_file)
Example #8
0
    def stop(self, env, upgrade_type=None):
        import params
        import status_params
        env.set_params(params)
        env.set_params(status_params)

        Directory([params.nifi_registry_bin_dir],
                  owner=params.nifi_registry_user,
                  group=params.nifi_registry_group,
                  create_parents=True,
                  recursive_ownership=True,
                  cd_access='a')

        env_content = InlineTemplate(params.nifi_registry_env_content)
        File(format("{params.nifi_registry_bin_dir}/nifi-registry-env.sh"),
             content=env_content,
             owner=params.nifi_registry_user,
             group=params.nifi_registry_group,
             mode=0755)

        Execute('export JAVA_HOME=' + params.jdk64_home + ';' +
                params.nifi_registry_bin_dir + '/nifi-registry.sh stop >> ' +
                params.nifi_registry_log_file,
                user=params.nifi_registry_user)
        if os.path.isfile(status_params.nifi_registry_pid_file):
            sudo.unlink(status_params.nifi_registry_pid_file)
Example #9
0
    def stop(self, env, upgrade_type=None):
        import params
        import status_params

        nifi_toolkit_util_common.copy_toolkit_scripts(
            params.toolkit_files_dir,
            params.toolkit_tmp_dir,
            params.nifi_user,
            params.nifi_group,
            upgrade_type,
            service=nifi_toolkit_util_common.NIFI)
        run_ca_script = os.path.join(params.toolkit_tmp_dir, 'run_ca.sh')
        ca_server_script = nifi_toolkit_util_common.get_toolkit_script(
            'tls-toolkit.sh', params.toolkit_tmp_dir,
            params.stack_version_buildnum)
        File(ca_server_script, mode=0755)
        File(run_ca_script, mode=0755)

        if path_isfile(status_params.nifi_ca_pid_file):
            Execute(
                (run_ca_script, "stop", params.jdk64_home, ca_server_script,
                 params.nifi_config_dir + '/nifi-certificate-authority.json',
                 params.nifi_ca_log_file_stdout,
                 params.nifi_ca_log_file_stderr,
                 status_params.nifi_ca_pid_file, params.toolkit_ca_check_url),
                user=params.nifi_user,
                logoutput=True)
            try:
                self.status(env)
            except ComponentIsNotRunning:
                unlink(status_params.nifi_ca_pid_file)
Example #10
0
def move_store(client_dict, key):
    if store_exists(client_dict, key):
        num = 0
        name = client_dict[key]
        while sudo.path_isfile(name + '.bak.' + str(num)):
            num += 1
        sudo.copy(name, name + '.bak.' + str(num))
        sudo.unlink(name)
Example #11
0
 def action_delete(self):
   path = self.resource.path
   
   if sudo.path_isdir(path):
     raise Fail("Applying %s failed, %s is directory not file!" % (self.resource, path))
   
   if sudo.path_exists(path):
     Logger.info("Deleting %s" % self.resource)
     sudo.unlink(path)
Example #12
0
 def action_delete(self):
   path = self.resource.path
   
   if sudo.path_isdir(path):
     raise Fail("Applying %s failed, %s is directory not file!" % (self.resource, path))
   
   if sudo.path_exists(path):
     Logger.info("Deleting %s" % self.resource)
     sudo.unlink(path)
Example #13
0
    def stop(self, env):
        import params
        import status_params

        Execute('export JAVA_HOME=' + params.jdk64_home + ';' +
                params.bin_dir + '/nifi.sh stop >> ' +
                params.nifi_node_log_file,
                user=params.nifi_user)
        if os.path.isfile(status_params.nifi_node_pid_file):
            sudo.unlink(status_params.nifi_node_pid_file)
Example #14
0
    def stop(self, env):
        # Import properties defined in -env.xml file from the status_params class
        import status_params

        # Stop Kibana
        cmd = 'systemctl stop kibana.service'
        Execute(cmd)

        if os.path.isfile(status_params.kibana_pid_file):
            sudo.unlink(status_params.kibana_pid_file)
        print 'Stop kibana complete'
Example #15
0
def create_symlink_using_path(src_path, dest_link, force=False):
    """
  Helper function to create symbolic link (dest_link -> src_path)
  :param src_path: Source path
  :param dest_link: Destination link
  :param force: Remove existing symlink
  """
    if force and os.path.islink(dest_link):
        sudo.unlink(dest_link)
    sudo.symlink(src_path, dest_link)
    print_info_msg("Symlink: " + dest_link)
Example #16
0
def remove_config_version(version_file, version_type, nifi_user, nifi_group):
    if sudo.path_isfile(version_file):
        contents = sudo.read_file(version_file)
        version = json.loads(contents)
        version.pop(version_type, None)
        sudo.unlink(version_file)

        File(version_file,
             owner=nifi_user,
             group=nifi_group,
             mode=0600,
             content=json.dumps(version))
Example #17
0
  def stop(self, env, upgrade_type=None):
    import params
    import status_params
    env.set_params(params)
    env.set_params(status_params)

    env_content=InlineTemplate(params.nifi_env_content)
    File(format("{params.bin_dir}/nifi-env.sh"), content=env_content, owner=params.nifi_user, group=params.nifi_group, mode=0755)

    Execute ('export JAVA_HOME='+params.jdk64_home+';'+params.bin_dir+'/nifi.sh stop >> ' + params.nifi_node_log_file, user=params.nifi_user)
    if os.path.isfile(status_params.nifi_node_pid_file):
      sudo.unlink(status_params.nifi_node_pid_file)
Example #18
0
    def stop(self, env):

        # Import properties defined in -env.xml file from the status_params class
        import status_params

        # Stop Filebeat
        cmd = '/etc/init.d/filebeat stop'
        Execute(cmd)

        if os.path.isfile(status_params.filebeat_pid_file):
            sudo.unlink(status_params.filebeat_pid_file)
        print 'Stop filebeat complete'
Example #19
0
def create_symlink(src_dir, dest_dir, file_name, force=False):
    """
  Helper function to create symbolic link (dest_dir/file_name -> src_dir/file_name)
  :param src_dir: Source directory
  :param dest_dir: Destination directory
  :param file_name: File name
  :param force: Remove existing symlink
  """
    src_path = os.path.join(src_dir, file_name)
    dest_link = os.path.join(dest_dir, file_name)
    if force and os.path.islink(dest_link):
        sudo.unlink(dest_link)
    sudo.symlink(src_path, dest_link)
Example #20
0
def process_stack_addon_service_definitions_artifact(artifact,
                                                     artifact_source_dir,
                                                     options):
    """
  Process stack addon service definitions artifact
  :param artifact: Artifact metadata
  :param artifact_source_dir: Location of artifact in the management pack
  :param options: Command line options
  """
    # Get ambari mpack properties
    stack_location, extension_location, service_definitions_location, mpacks_staging_location, dashboard_location = get_mpack_properties(
    )
    service_versions_map = None
    if "service_versions_map" in artifact:
        service_versions_map = artifact.service_versions_map
    if not service_versions_map:
        msg = "Must provide service versions map for " + STACK_ADDON_SERVICE_DEFINITIONS_ARTIFACT_NAME + " artifact!"
        print_error_msg(msg)
        raise FatalException(-1, msg)
    for service_name in sorted(os.listdir(artifact_source_dir)):
        source_service_path = os.path.join(artifact_source_dir, service_name)
        for service_version in sorted(os.listdir(source_service_path)):
            source_service_version_path = os.path.join(source_service_path,
                                                       service_version)
            for service_version_entry in service_versions_map:
                if service_name == service_version_entry.service_name and service_version == service_version_entry.service_version:
                    applicable_stacks = service_version_entry.applicable_stacks
                    for applicable_stack in applicable_stacks:
                        stack_name = applicable_stack.stack_name
                        stack_version = applicable_stack.stack_version
                        dest_stack_path = os.path.join(stack_location,
                                                       stack_name)
                        dest_stack_version_path = os.path.join(
                            dest_stack_path, stack_version)
                        dest_stack_services_path = os.path.join(
                            dest_stack_version_path, SERVICES_DIRNAME)
                        dest_link = os.path.join(dest_stack_services_path,
                                                 service_name)
                        if os.path.exists(dest_stack_path) and os.path.exists(
                                dest_stack_version_path):
                            if not os.path.exists(dest_stack_services_path):
                                sudo.makedir(dest_stack_services_path, 0755)
                            if options.force and os.path.islink(dest_link):
                                sudo.unlink(dest_link)
                            sudo.symlink(source_service_version_path,
                                         dest_link)
                            create_dashboard_symlinks(
                                source_service_version_path, service_name,
                                dashboard_location, options)
Example #21
0
    def setup_tls_toolkit_upgrade(self, env):
        import params
        env.set_params(params)

        if params.upgrade_direction == Direction.UPGRADE and params.nifi_ssl_enabled and params.nifi_ca_host:
            version_file = params.nifi_config_dir + '/config_version'
            client_json_file = params.nifi_config_dir + '/nifi-certificate-authority-client.json'

            if sudo.path_isfile(version_file):
                Logger.info(format('Remove config version file if does exist'))
                sudo.unlink(version_file)

            if sudo.path_isfile(client_json_file):
                Logger.info(format('Remove client json file'))
                sudo.unlink(client_json_file)
Example #22
0
    def setup_tls_toolkit_upgrade(self, env):
        import params
        env.set_params(params)

        version_file = params.nifi_config_dir + '/config_version'
        client_json_file = params.nifi_config_dir + '/nifi-certificate-authority-client.json'

        if not sudo.path_isfile(version_file):
            Logger.info(format('Create config version file if it does not exist'))
            version_num = params.config['configurationTags']['nifi-ambari-ssl-config']['tag']
            nifi_toolkit_util.save_config_version(version_file, 'ssl', version_num, params.nifi_user,
                                                  params.nifi_group)

        if sudo.path_isfile(client_json_file):
            Logger.info(format('Remove client json file'))
            sudo.unlink(client_json_file)
Example #23
0
def save_config_version(version_file, version_type, version_num,
                        nifi_registry_user, nifi_registry_group):
    version = {}
    if sudo.path_isfile(version_file):
        contents = sudo.read_file(version_file)
        version = json.loads(contents)
        version[version_type] = version_num
        sudo.unlink(version_file)
    else:
        version[version_type] = version_num

    File(version_file,
         owner=nifi_registry_user,
         group=nifi_registry_group,
         mode=0600,
         content=json.dumps(version))
Example #24
0
    def stop(self, env):
        import status_params

        if path_isfile(status_params.nifi_ca_pid_file):
            try:
                self.status(env)
                pid = int(read_file(status_params.nifi_ca_pid_file))
                for i in range(25):
                    kill(pid, SIGTERM)
                    time.sleep(1)
                    self.status(env)
                kill(pid, SIGKILL)
                time.sleep(5)
                self.status(env)
            except ComponentIsNotRunning:
                unlink(status_params.nifi_ca_pid_file)
Example #25
0
    def stop(self, env):
        # Import properties defined in -config.xml file from the params class
        import params

        # Import properties defined in -env.xml file from the status_params class
        import status_params

        # This allows us to access the params.elastic_pid_file property as
        #  format('{elastic_pid_file}')
        env.set_params(params)

        # Stop Elasticsearch

        Execute("service elasticsearch stop")
        if os.path.isfile(status_params.elastic_pid_file):
            # kill_process(params.elastic_pid_file, params.elastic_user, params.elastic_log_dir)
            sudo.unlink(status_params.elastic_pid_file)
Example #26
0
  def setup_tls_toolkit_upgrade(self,env):
    import params
    env.set_params(params)

    upgrade_stack = stack_select._get_upgrade_stack()
    if upgrade_stack is None:
      raise Fail('Unable to determine the stack and stack version')

    if params.upgrade_direction == Direction.UPGRADE and params.nifi_ssl_enabled and params.nifi_ca_host:
      version_file = params.nifi_config_dir + '/config_version'
      client_json_file = params.nifi_config_dir+ '/nifi-certificate-authority-client.json'

      if sudo.path_isfile(version_file):
        Logger.info(format('Remove config version file if does exist'))
        sudo.unlink(version_file)

      if sudo.path_isfile(client_json_file):
        Logger.info(format('Remove client json file'))
        sudo.unlink(client_json_file)
Example #27
0
    def setup_tls_toolkit_upgrade(self,env):
        import params
        env.set_params(params)

        upgrade_stack = stack_select._get_upgrade_stack()
        if upgrade_stack is None:
            raise Fail('Unable to determine the stack and stack version')

        if params.upgrade_direction == Direction.UPGRADE and params.nifi_registry_ssl_enabled and params.nifi_ca_host:
            version_file = params.nifi_registry_config_dir + '/config_version'
            client_json_file = params.nifi_registry_config_dir+ '/nifi-certificate-authority-client.json'

#            if not sudo.path_isfile(version_file):
#                Logger.info(format('Create config version file if it does not exist'))
#                version_num = params.config['configurationTags']['nifi-registry-ambari-ssl-config']['tag']
#                nifi_toolkit_util.save_config_version(version_file,'ssl',version_num,params.nifi_registry_user,params.nifi_registry_group)

            if sudo.path_isfile(client_json_file):
                Logger.info(format('Remove client json file'))
                sudo.unlink(client_json_file)
Example #28
0
def main():
    properties = get_ambari_properties()
    if properties == -1:
        print >> sys.stderr, "Error getting ambari properties"
        return -1

    resources_location = get_resources_location(properties)
    views_dir = os.path.join(resources_location, "views")

    for file in os.listdir(views_dir):
        path = os.path.join(views_dir, file)
        if os.path.isfile(path):
            if "ambari-admin" in path or "storm-view" in path:
                print "Keeping views jar : " + path
            else:
                print "Deleting views jar : " + path
                sudo.unlink(path)
        else:
            print "Deleting views directory : " + path
            sudo.rmtree(path)
    return 0
Example #29
0
 def create_30_config_version(self, env):
     package_name = 'registry'
     stack_root = Script.get_stack_root()
     current_dir = "{0}/current/registry/conf".format(stack_root)
     directories = [{
         "conf_dir": "/etc/registry/conf",
         "current_dir": current_dir
     }]
     stack_version = stack_select.get_stack_version_before_install(
         package_name)
     conf_dir = "/etc/registry/conf"
     if stack_version:
         try:
             #Check if broken symbolic links issue exists
             os.stat(conf_dir)
             conf_select.convert_conf_directories_to_symlinks(
                 package_name, stack_version, directories)
             cp_cmd = as_sudo([
                 "cp", "-a", "-f", "/etc/registry/conf.backup/.",
                 "/etc/registry/conf"
             ])
             Execute(cp_cmd, logoutput=True)
         except OSError as e:
             Logger.warning(
                 "Detected broken symlink : {0}. Attempting to repair.".
                 format(str(e)))
             #removing symlink conf directory
             sudo.unlink(conf_dir)
             #make conf dir again
             sudo.makedirs(conf_dir, 0755)
             #copy all files
             for files in glob.glob("/etc/registry/conf.backup/*"):
                 cp_cmd = as_sudo(["cp", "-r", files, conf_dir])
                 Execute(cp_cmd, logoutput=True)
             conf_select.convert_conf_directories_to_symlinks(
                 package_name, stack_version, directories)
Example #30
0
 def action_delete(self):
   path = self.resource.path
   if sudo.path_lexists(path):
     Logger.info("Deleting %s" % self.resource)
     sudo.unlink(path)
Example #31
0
 def action_delete(self):
     path = self.resource.path
     if sudo.path_lexists(path):
         Logger.info("Deleting %s" % self.resource)
         sudo.unlink(path)