本文整理汇总了Golang中k8s/io/kubernetes/pkg/labels.Parse函数的典型用法代码示例。如果您正苦于以下问题:Golang Parse函数的具体用法?Golang Parse怎么用?Golang Parse使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Parse函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Complete
// Complete converts string representations of field and label selectors to their parsed equivalent, or
// returns an error.
func (o *RouterSelection) Complete() error {
if len(o.HostnameTemplate) == 0 && o.OverrideHostname {
return fmt.Errorf("--override-hostname requires that --hostname-template be specified")
}
if len(o.LabelSelector) > 0 {
s, err := labels.Parse(o.LabelSelector)
if err != nil {
return fmt.Errorf("label selector is not valid: %v", err)
}
o.Labels = s
} else {
o.Labels = labels.Everything()
}
if len(o.FieldSelector) > 0 {
s, err := fields.ParseSelector(o.FieldSelector)
if err != nil {
return fmt.Errorf("field selector is not valid: %v", err)
}
o.Fields = s
} else {
o.Fields = fields.Everything()
}
if len(o.ProjectLabelSelector) > 0 {
if len(o.Namespace) > 0 {
return fmt.Errorf("only one of --project-labels and --namespace may be used")
}
if len(o.NamespaceLabelSelector) > 0 {
return fmt.Errorf("only one of --namespace-labels and --project-labels may be used")
}
if o.ProjectLabelSelector == "*" {
o.ProjectLabels = labels.Everything()
} else {
s, err := labels.Parse(o.ProjectLabelSelector)
if err != nil {
return fmt.Errorf("--project-labels selector is not valid: %v", err)
}
o.ProjectLabels = s
}
}
if len(o.NamespaceLabelSelector) > 0 {
if len(o.Namespace) > 0 {
return fmt.Errorf("only one of --namespace-labels and --namespace may be used")
}
s, err := labels.Parse(o.NamespaceLabelSelector)
if err != nil {
return fmt.Errorf("--namespace-labels selector is not valid: %v", err)
}
o.NamespaceLabels = s
}
return nil
}
示例2: validateLabels
func validateLabels(a, b string) bool {
sA, eA := labels.Parse(a)
if eA != nil {
return false
}
sB, eB := labels.Parse(b)
if eB != nil {
return false
}
return sA.String() == sB.String()
}
示例3: Complete
// Complete converts string representations of field and label selectors to their parsed equivalent, or
// returns an error.
func (o *RouterSelection) Complete() error {
if len(o.LabelSelector) > 0 {
s, err := labels.Parse(o.LabelSelector)
if err != nil {
return fmt.Errorf("label selector is not valid: %v", err)
}
o.Labels = s
} else {
o.Labels = labels.Everything()
}
if len(o.FieldSelector) > 0 {
s, err := fields.ParseSelector(o.FieldSelector)
if err != nil {
return fmt.Errorf("field selector is not valid: %v", err)
}
o.Fields = s
} else {
o.Fields = fields.Everything()
}
if len(o.ProjectLabelSelector) > 0 {
if len(o.Namespace) > 0 {
return fmt.Errorf("only one of --project-labels and --namespace may be used")
}
if len(o.NamespaceLabelSelector) > 0 {
return fmt.Errorf("only one of --namespace-labels and --project-labels may be used")
}
if o.ProjectLabelSelector == "*" {
o.ProjectLabels = labels.Everything()
} else {
s, err := labels.Parse(o.ProjectLabelSelector)
if err != nil {
return fmt.Errorf("--project-labels selector is not valid: %v", err)
}
o.ProjectLabels = s
}
}
if len(o.NamespaceLabelSelector) > 0 {
if len(o.Namespace) > 0 {
return fmt.Errorf("only one of --namespace-labels and --namespace may be used")
}
s, err := labels.Parse(o.NamespaceLabelSelector)
if err != nil {
return fmt.Errorf("--namespace-labels selector is not valid: %v", err)
}
o.NamespaceLabels = s
}
return nil
}
示例4: UnmarshalJSON
// UnmarshalJSON implements the json.Unmarshaler interface for deserializing the JSON
// representation of an DS. Lets json interface know how to unmarshal a DaemonSet
// Can be called using json.Unmarshal
func (ds *DaemonSet) UnmarshalJSON(b []byte) error {
var rawDS RawDaemonSet
if err := json.Unmarshal(b, &rawDS); err != nil {
return err
}
var podManifest manifest.Manifest
if rawDS.Manifest != "" {
var err error
podManifest, err = manifest.FromBytes([]byte(rawDS.Manifest))
if err != nil {
return err
}
}
nodeSelector, err := labels.Parse(rawDS.NodeSelector)
if err != nil {
return err
}
*ds = DaemonSet{
ID: rawDS.ID,
Disabled: rawDS.Disabled,
Manifest: podManifest,
MinHealth: rawDS.MinHealth,
Name: rawDS.Name,
NodeSelector: nodeSelector,
PodID: rawDS.PodID,
Timeout: rawDS.Timeout,
}
return nil
}
示例5: ExtractFromListOptions
func ExtractFromListOptions(opts interface{}) (labelSelector labels.Selector, fieldSelector fields.Selector, resourceVersion string) {
var err error
switch t := opts.(type) {
case api.ListOptions:
labelSelector = t.LabelSelector
fieldSelector = t.FieldSelector
resourceVersion = t.ResourceVersion
case v1.ListOptions:
labelSelector, err = labels.Parse(t.LabelSelector)
if err != nil {
panic(err)
}
fieldSelector, err = fields.ParseSelector(t.FieldSelector)
if err != nil {
panic(err)
}
resourceVersion = t.ResourceVersion
default:
panic(fmt.Errorf("expect a ListOptions"))
}
if labelSelector == nil {
labelSelector = labels.Everything()
}
if fieldSelector == nil {
fieldSelector = fields.Everything()
}
return labelSelector, fieldSelector, resourceVersion
}
示例6: Select
func (l *labelHTTPServer) Select(resp http.ResponseWriter, req *http.Request) {
labelType, err := AsType(req.URL.Query().Get("type"))
if err != nil {
http.Error(resp, err.Error(), http.StatusBadRequest)
return
}
selector, err := klabels.Parse(req.URL.Query().Get("selector"))
if err != nil {
http.Error(resp, err.Error(), http.StatusBadRequest)
return
}
matches := []Labeled{}
if l.useBatcher {
allLabels, err := l.batcher.ForType(labelType).Retrieve()
if err != nil {
http.Error(resp, err.Error(), http.StatusServiceUnavailable)
return
}
for _, candidate := range allLabels {
if selector.Matches(candidate.Labels) {
matches = append(matches, candidate)
}
}
} else {
matches, err = l.applicator.GetMatches(selector, labelType, false)
if err != nil {
http.Error(resp, err.Error(), http.StatusServiceUnavailable)
return
}
}
l.respondWithJSON(matches, resp)
}
示例7: nodeMetricsList
func (a *Api) nodeMetricsList(request *restful.Request, response *restful.Response) {
selector := request.QueryParameter("labelSelector")
labelSelector, err := labels.Parse(selector)
if err != nil {
errMsg := fmt.Errorf("Error while parsing selector %v: %v", selector, err)
glog.Error(errMsg)
response.WriteError(http.StatusBadRequest, errMsg)
return
}
nodes, err := a.nodeLister.NodeCondition(func(node *kube_api.Node) bool {
if labelSelector.Empty() {
return true
}
return labelSelector.Matches(labels.Set(node.Labels))
}).List()
if err != nil {
errMsg := fmt.Errorf("Error while listing nodes: %v", err)
glog.Error(errMsg)
response.WriteError(http.StatusInternalServerError, errMsg)
return
}
res := v1alpha1.NodeMetricsList{}
for _, node := range nodes {
if m := a.getNodeMetrics(node.Name); m != nil {
res.Items = append(res.Items, *m)
}
}
response.WriteEntity(&res)
}
示例8: podMetricsInNamespaceList
func podMetricsInNamespaceList(a *Api, request *restful.Request, response *restful.Response, namespace string) {
selector := request.QueryParameter("labelSelector")
labelSelector, err := labels.Parse(selector)
if err != nil {
errMsg := fmt.Errorf("Error while parsing selector %v: %v", selector, err)
glog.Error(errMsg)
response.WriteError(http.StatusBadRequest, errMsg)
return
}
pods, err := a.podLister.Pods(namespace).List(labelSelector)
if err != nil {
errMsg := fmt.Errorf("Error while listing pods for selector %v: %v", selector, err)
glog.Error(errMsg)
response.WriteError(http.StatusInternalServerError, errMsg)
return
}
res := v1alpha1.PodMetricsList{}
for _, pod := range pods.Items {
if m := a.getPodMetrics(&pod); m != nil {
res.Items = append(res.Items, *m)
} else {
glog.Infof("No metrics for pod %s/%s", pod.Namespace, pod.Name)
}
}
response.WriteEntity(&res)
}
示例9: UnmarshalJSON
// UnmarshalJSON implements the json.Unmarshaler interface for deserializing the JSON
// representation of an RC.
func (rc *RC) UnmarshalJSON(b []byte) error {
var rawRC RawRC
if err := json.Unmarshal(b, &rawRC); err != nil {
return err
}
var m manifest.Manifest
if rawRC.Manifest != "" {
var err error
m, err = manifest.FromBytes([]byte(rawRC.Manifest))
if err != nil {
return err
}
}
nodeSel, err := labels.Parse(rawRC.NodeSelector)
if err != nil {
return err
}
*rc = RC{
ID: rawRC.ID,
Manifest: m,
NodeSelector: nodeSel,
PodLabels: rawRC.PodLabels,
ReplicasDesired: rawRC.ReplicasDesired,
Disabled: rawRC.Disabled,
}
return nil
}
示例10: parseNodeSelector
func parseNodeSelector(selectorString string) (klabels.Selector, error) {
selector, err := klabels.Parse(selectorString)
if err != nil {
return selector, util.Errorf("Malformed selector: %v", err)
}
return selector, nil
}
示例11: Validate
// Common validations
func (p *ProjectOptions) Validate() error {
errList := []error{}
if p.CheckSelector {
if len(p.Selector) > 0 {
if _, err := labels.Parse(p.Selector); err != nil {
errList = append(errList, errors.New("--selector=<project_selector> must be a valid label selector"))
}
}
if len(p.ProjectNames) != 0 {
errList = append(errList, errors.New("either specify --selector=<project_selector> or projects but not both"))
}
} else if len(p.ProjectNames) == 0 {
errList = append(errList, errors.New("must provide --selector=<project_selector> or projects"))
}
clusterNetwork, err := p.Oclient.ClusterNetwork().Get(sdnapi.ClusterNetworkDefault)
if err != nil {
if kapierrors.IsNotFound(err) {
errList = append(errList, errors.New("Managing pod network is only supported for openshift multitenant network plugin"))
} else {
errList = append(errList, errors.New("Failed to fetch current network plugin info"))
}
} else if !sdnapi.IsOpenShiftMultitenantNetworkPlugin(clusterNetwork.PluginName) {
errList = append(errList, fmt.Errorf("Using plugin: %q, managing pod network is only supported for openshift multitenant network plugin", clusterNetwork.PluginName))
}
return kerrors.NewAggregate(errList)
}
示例12: rsAndPodsWithHashKeySynced
// rsAndPodsWithHashKeySynced returns the RSes and pods the given deployment targets, with pod-template-hash information synced.
func (dc *DeploymentController) rsAndPodsWithHashKeySynced(deployment *extensions.Deployment) ([]*extensions.ReplicaSet, *v1.PodList, error) {
rsList, err := deploymentutil.ListReplicaSets(deployment,
func(namespace string, options v1.ListOptions) ([]*extensions.ReplicaSet, error) {
parsed, err := labels.Parse(options.LabelSelector)
if err != nil {
return nil, err
}
return dc.rsLister.ReplicaSets(namespace).List(parsed)
})
if err != nil {
return nil, nil, fmt.Errorf("error listing ReplicaSets: %v", err)
}
syncedRSList := []*extensions.ReplicaSet{}
for _, rs := range rsList {
// Add pod-template-hash information if it's not in the RS.
// Otherwise, new RS produced by Deployment will overlap with pre-existing ones
// that aren't constrained by the pod-template-hash.
syncedRS, err := dc.addHashKeyToRSAndPods(rs)
if err != nil {
return nil, nil, err
}
syncedRSList = append(syncedRSList, syncedRS)
}
syncedPodList, err := dc.listPods(deployment)
if err != nil {
return nil, nil, err
}
return syncedRSList, syncedPodList, nil
}
示例13: RunTopPod
func (o TopPodOptions) RunTopPod() error {
var err error
selector := labels.Everything()
if len(o.Selector) > 0 {
selector, err = labels.Parse(o.Selector)
if err != nil {
return err
}
}
metrics, err := o.Client.GetPodMetrics(o.Namespace, o.ResourceName, o.AllNamespaces, selector)
// TODO: Refactor this once Heapster becomes the API server.
// First we check why no metrics have been received.
if len(metrics) == 0 {
// If the API server query is successful but all the pods are newly created,
// the metrics are probably not ready yet, so we return the error here in the first place.
e := verifyEmptyMetrics(o, selector)
if e != nil {
return e
}
}
if err != nil {
return err
}
return o.Printer.PrintPodMetrics(metrics, o.PrintContainers, o.AllNamespaces)
}
示例14: init
func init() {
var err error
servicesSelector, err = labels.Parse(fmt.Sprintf("%s/routable==true", prefix))
if err != nil {
log.Fatal(err)
}
}
示例15: runJoinCluster
func runJoinCluster(cmd *cobra.Command, args []string) error {
cli, err := client.NewInCluster()
if err != nil {
return fmt.Errorf("unable to connect k8s api server: %v", err)
}
labelSelector, err := labels.Parse(influxSelectors)
if err != nil {
return fmt.Errorf("unable to parse labels: %v", err)
}
fieldSelector := fields.Everything()
podIPs, err := podIps(cli, labelSelector, fieldSelector)
if err != nil {
return err
}
hostIP, err := externalIP()
if err != nil {
return err
}
peers := influxdbPeers(hostIP, podIPs)
iOpts := influxdOpts(hostIP, peers)
if err := ioutil.WriteFile(envVarFile, []byte(iOpts), 0644); err != nil {
return err
}
return nil
}