// parse the value of --etcd-servers-overrides and update given storageDestinations. func updateEtcdOverrides(overrides []string, storageVersions map[string]string, etcdConfig etcdstorage.EtcdConfig, storageDestinations *genericapiserver.StorageDestinations, newEtcdFn newEtcdFunc) { if len(overrides) == 0 { return } for _, override := range overrides { tokens := strings.Split(override, "#") if len(tokens) != 2 { glog.Errorf("invalid value of etcd server overrides: %s", override) continue } apiresource := strings.Split(tokens[0], "/") if len(apiresource) != 2 { glog.Errorf("invalid resource definition: %s", tokens[0]) } group := apiresource[0] resource := apiresource[1] apigroup, err := registered.Group(group) if err != nil { glog.Errorf("invalid api group %s: %v", group, err) continue } if _, found := storageVersions[apigroup.GroupVersion.Group]; !found { glog.Errorf("Couldn't find the storage version for group %s", apigroup.GroupVersion.Group) continue } servers := strings.Split(tokens[1], ";") overrideEtcdConfig := etcdConfig overrideEtcdConfig.ServerList = servers // Note, internalGV will be wrong for things like batch or // autoscalers, but they shouldn't be using the override // storage. internalGV := apigroup.GroupVersion.Group + "/__internal" etcdOverrideStorage, err := newEtcdFn(api.Codecs, storageVersions[apigroup.GroupVersion.Group], internalGV, overrideEtcdConfig) if err != nil { glog.Fatalf("Invalid storage version or misconfigured etcd for %s: %v", tokens[0], err) } storageDestinations.AddStorageOverride(group, resource, etcdOverrideStorage) } }
// parse the value of --etcd-servers-overrides and update given storageDestinations. func updateEtcdOverrides(overrides []string, storageVersions map[string]string, prefix string, storageDestinations *genericapiserver.StorageDestinations, newEtcdFn newEtcdFunc) { if len(overrides) == 0 { return } for _, override := range overrides { tokens := strings.Split(override, "#") if len(tokens) != 2 { glog.Errorf("invalid value of etcd server overrides: %s", override) continue } apiresource := strings.Split(tokens[0], "/") if len(apiresource) != 2 { glog.Errorf("invalid resource definition: %s", tokens[0]) } group := apiresource[0] resource := apiresource[1] apigroup, err := registered.Group(group) if err != nil { glog.Errorf("invalid api group %s: %v", group, err) continue } if _, found := storageVersions[apigroup.GroupVersion.Group]; !found { glog.Errorf("Couldn't find the storage version for group %s", apigroup.GroupVersion.Group) continue } servers := strings.Split(tokens[1], ";") etcdOverrideStorage, err := newEtcdFn(servers, api.Codecs, storageVersions[apigroup.GroupVersion.Group], prefix) if err != nil { glog.Fatalf("Invalid storage version or misconfigured etcd for %s: %v", tokens[0], err) } storageDestinations.AddStorageOverride(group, resource, etcdOverrideStorage) } }