private void subscribeVs()

in dubbo-kubernetes/src/main/java/org/apache/dubbo/registry/kubernetes/KubernetesMeshEnvListener.java [79:127]


    private void subscribeVs(String appName) {
        if (vsAppWatch.containsKey(appName)) {
            return;
        }

        try {
            Watch watch = kubernetesClient
                    .genericKubernetesResources(MeshConstant.getVsDefinition())
                    .inNamespace(namespace)
                    .withName(appName)
                    .watch(new Watcher<GenericKubernetesResource>() {
                        @Override
                        public void eventReceived(Action action, GenericKubernetesResource resource) {
                            if (logger.isInfoEnabled()) {
                                logger.info("Received VS Rule notification. AppName: " + appName + " Action:" + action
                                        + " Resource:" + resource);
                            }

                            if (action == Action.ADDED || action == Action.MODIFIED) {
                                String vsRule = new Yaml(new SafeConstructor(new LoaderOptions())).dump(resource);
                                vsAppCache.put(appName, vsRule);
                                if (drAppCache.containsKey(appName)) {
                                    notifyListener(vsRule, appName, drAppCache.get(appName));
                                }
                            } else {
                                appRuleListenerMap.get(appName).receiveConfigInfo("");
                            }
                        }

                        @Override
                        public void onClose(WatcherException cause) {
                            // ignore
                        }
                    });
            vsAppWatch.put(appName, watch);
            try {
                GenericKubernetesResource vsRule = kubernetesClient
                        .genericKubernetesResources(MeshConstant.getVsDefinition())
                        .inNamespace(namespace)
                        .withName(appName)
                        .get();
                vsAppCache.put(appName, new Yaml(new SafeConstructor(new LoaderOptions())).dump(vsRule));
            } catch (Throwable ignore) {

            }
        } catch (Exception e) {
            logger.error(REGISTRY_ERROR_LISTEN_KUBERNETES, "", "", "Error occurred when listen kubernetes crd.", e);
        }
    }