本文整理汇总了Golang中github.com/romana/rlog.Infof函数的典型用法代码示例。如果您正苦于以下问题:Golang Infof函数的具体用法?Golang Infof怎么用?Golang Infof使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了Infof函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: process
// process is a goroutine that consumes resource update events coming from
// Kubernetes and:
// 1. On receiving an added or deleted event:
// i. add it to the queue
// ii. on a timer event, send the events to handleNetworkPolicyEvents and empty the queue
// 2. On receiving a done event, exit the goroutine
func (l *KubeListener) process(in <-chan Event, done chan struct{}) {
log.Infof("KubeListener: process(): Entered with in %v, done %v", in, done)
timer := time.Tick(processorTickTime * time.Second)
var networkPolicyEvents []Event
go func() {
for {
select {
case <-timer:
if len(networkPolicyEvents) > 0 {
log.Infof("Calling network policy handler for scheduled %d events", len(networkPolicyEvents))
handleNetworkPolicyEvents(networkPolicyEvents, l)
networkPolicyEvents = nil
}
case e := <-in:
log.Infof("KubeListener: process(): Got %v", e)
switch obj := e.Object.(type) {
case *v1beta1.NetworkPolicy:
log.Tracef(trace.Inside, "Scheduing network policy action, now scheduled %d actions", len(networkPolicyEvents))
networkPolicyEvents = append(networkPolicyEvents, e)
case *v1.Namespace:
log.Tracef(trace.Inside, "Processor received namespace")
handleNamespaceEvent(e, l)
default:
log.Errorf("Processor received an event of unkonwn type %s, ignoring object %s", reflect.TypeOf(obj), obj)
}
case <-done:
log.Infof("KubeListener: process(): Got done")
return
}
}
}()
return
}
开发者ID:romana,项目名称:core,代码行数:41,代码来源:processor.go
示例2: Init
// Init implements Firewall interface
func (i *IPTsaveFirewall) Init(exec utilexec.Executable, store FirewallStore, nc NetConfig) error {
log.Infof("In Init()")
fwstore := firewallStore{}
fwstore.DbStore = store.GetDb()
fwstore.mu = store.GetMutex()
i.Store = fwstore
i.os = exec
i.networkConfig = nc
// Read current iptables config.
output, err := i.os.Exec(iptablesSaveBin, []string{})
if err != nil {
log.Infof("In Init(), failed to call iptables-save, %s", err)
return err
}
// Parse iptables-save output.
i.CurrentState = &iptsave.IPtables{}
i.CurrentState.Parse(bytes.NewReader(output))
// Inirialize desired state filter table.
i.DesiredState = &iptsave.IPtables{}
i.DesiredState.Tables = append(i.DesiredState.Tables, &iptsave.IPtable{Name: "filter"})
log.Tracef(trace.Inside, "In Init(), iptables rules loaded\n, %s", i.CurrentState.Render())
return nil
}
开发者ID:romana,项目名称:core,代码行数:30,代码来源:iptsave.go
示例3: HandleDefaultPolicy
// HandleDefaultPolicy handles isolation flag on a namespace by creating/deleting
// default network policy. See http://kubernetes.io/docs/user-guide/networkpolicies/
func HandleDefaultPolicy(o *v1.Namespace, l *KubeListener) {
var defaultDeny bool
annotationKey := "net.beta.kubernetes.io/networkpolicy"
if np, ok := o.ObjectMeta.Annotations[annotationKey]; ok {
log.Infof("Handling default policy on a namespace %s, policy is now %s \n", o.ObjectMeta.Name, np)
// Annotations are stored in the Annotations map as raw JSON.
// So we need to parse it.
isolationPolicy := struct {
Ingress struct {
Isolation string `json:"isolation"`
} `json:"ingress"`
}{}
// TODO change to json.Unmarshal. Stas
err := json.NewDecoder(strings.NewReader(np)).Decode(&isolationPolicy)
if err != nil {
log.Errorf("In HandleDefaultPolicy :: Error decoding annotation %s: %s", annotationKey, err)
return
}
log.Debugf("Decoded to policy: %v", isolationPolicy)
defaultDeny = isolationPolicy.Ingress.Isolation == "DefaultDeny"
} else {
log.Infof("Handling default policy on a namespace, no annotation detected assuming non isolated namespace\n")
defaultDeny = false
}
if defaultDeny {
deleteDefaultPolicy(o, l)
} else {
addDefaultPolicy(o, l)
}
}
开发者ID:romana,项目名称:core,代码行数:32,代码来源:resources.go
示例4: getConnStrings
// getConnStrings returns the appropriate GORM connection string for
// the given DB.
func (dbStore *DbStore) getConnStrings() []string {
var connStr []string
info := dbStore.Config
switch info.Type {
case "sqlite3":
connStr = append(connStr, info.Database)
log.Infof("DB: Connection string: %s", info.Database)
default:
portStr := fmt.Sprintf(":%d", info.Port)
if info.Port == 0 {
portStr = ":3306"
}
connStr = append(connStr, fmt.Sprintf("%s:%[email protected](%s%s)/%s?parseTime=true",
info.Username, info.Password, info.Host, portStr, info.Database))
log.Infof("DB: Connection string: ****:****@tcp(%s%s)/%s?parseTime=true",
info.Host, portStr, info.Database)
connStr = append(connStr, fmt.Sprintf("%s:%[email protected](/var/run/mysqld/mysqld.sock)/%s?parseTime=true",
info.Username, info.Password, info.Database))
log.Infof("DB: Connection string: ****:****@unix(/var/run/mysqld/mysqld.sock))/%s?parseTime=true",
info.Database)
connStr = append(connStr, fmt.Sprintf("%s:%[email protected](/tmp/mysqld.sock)/%s?parseTime=true",
info.Username, info.Password, info.Database))
log.Infof("DB: Connection string: ****:****@unix(/tmp/mysqld.sock))/%s?parseTime=true",
info.Database)
}
return connStr
}
开发者ID:romana,项目名称:core,代码行数:29,代码来源:store.go
示例5: addDefaultPolicy
// addDefaultPolicy adds the default policy which is to allow
// all ingres.
func addDefaultPolicy(o *v1.Namespace, l *KubeListener) {
var err error
// TODO this should be ExternalID, not Name...
policyName := getDefaultPolicyName(o)
// Before adding the default policy, see if it may already exist.
policy := common.Policy{Name: policyName}
policyURL, err := l.restClient.GetServiceUrl("policy")
if err != nil {
log.Errorf("In addDefaultPolicy :: Failed to find policy service: %s\n", err)
log.Errorf("In addDefaultPolicy :: Failed to add default policy: %s\n", policyName)
return
}
policyURL = fmt.Sprintf("%s/find/policies/%s", policyURL, policy.Name)
err = l.restClient.Get(policyURL, &policy)
if err == nil {
// An annotation to set isolation off may be issued multiple
// times and we already have the default policy caused by that in place.
// So we just do not do anything.
log.Infof("In addDefaultPolicy :: Policy %s (%d) already exists, ignoring\n", policy.Name, policy.ID)
return
}
// Find tenant, to properly set up policy
// TODO This really should be by external ID...
tnt, err := l.resolveTenantByName(o.ObjectMeta.Name)
if err != nil {
log.Infof("In addDefaultPolicy :: Error :: failed to resolve tenant %s \n", err)
return
}
romanaPolicy := &common.Policy{
Direction: common.PolicyDirectionIngress,
Name: policyName,
// ExternalID: externalID,
AppliedTo: []common.Endpoint{{TenantNetworkID: &tnt.NetworkID}},
Ingress: []common.RomanaIngress{
common.RomanaIngress{
Peers: []common.Endpoint{{Peer: common.Wildcard}},
Rules: []common.Rule{{Protocol: common.Wildcard}},
},
},
}
err = l.addNetworkPolicy(*romanaPolicy)
switch err := err.(type) {
default:
log.Errorf("In addDefaultPolicy :: Error :: failed to create policy %s: %s\n", policyName, err)
case nil:
log.Debugf("In addDefaultPolicy: Succesfully created policy %s\n", policyName)
case common.HttpError:
if err.StatusCode == http.StatusConflict {
log.Infof("In addDefaultPolicy ::Policy %s already exists.\n", policyName)
} else {
log.Errorf("In addDefaultPolicy :: Error :: failed to create policy %s: %s\n", policyName, err)
}
}
}
开发者ID:romana,项目名称:core,代码行数:62,代码来源:resources.go
示例6: Marshal
func (j formMarshaller) Marshal(v interface{}) ([]byte, error) {
retval := ""
vPtr := reflect.ValueOf(v)
vVal := vPtr.Elem()
vType := reflect.TypeOf(vVal.Interface())
for i := 0; i < vVal.NumField(); i++ {
metaField := vType.Field(i)
field := vVal.Field(i)
formKey := metaField.Tag.Get("form")
if len(retval) > 0 {
retval += "&"
}
retval += formKey + "="
log.Infof("form key of %s is %s\n", metaField.Name, formKey)
str := ""
if metaField.Type == stringType {
str = field.Interface().(string)
} else {
toString := field.MethodByName("String")
log.Infof("Looking for method String on %s: %s\n", field, toString)
if reflect.Zero(reflect.TypeOf(toString)) != toString {
toStringResult := toString.Call(nil)
str = toStringResult[0].String()
} else {
log.Infof("Ignoring field %s of %s\n", metaField.Name, v)
continue
}
}
str = strings.TrimSpace(str)
retval += str
}
return []byte(retval), nil
}
开发者ID:romana,项目名称:core,代码行数:34,代码来源:middleware.go
示例7: Initialize
func (l *KubeListener) Initialize(client *common.RestClient) error {
l.restClient = client
// TODO, find a better place to initialize
// the translator. Stas.
PTranslator.Init(l.restClient, l.segmentLabelName, l.tenantLabelName)
tc := PTranslator.GetClient()
if tc == nil {
log.Critical("Failed to initialize rest client for policy translator.")
os.Exit(255)
}
l.lastEventPerNamespace = make(map[string]uint64)
log.Infof("%s: Starting server", l.Name())
nsURL, err := common.CleanURL(fmt.Sprintf("%s/%s/?%s", l.kubeURL, l.namespaceNotificationPath, HttpGetParamWatch))
if err != nil {
return err
}
log.Infof("Starting to listen on %s", nsURL)
done := make(chan struct{})
eventc, err := l.nsWatch(done, nsURL)
if err != nil {
log.Critical("Namespace watcher failed to start", err)
os.Exit(255)
}
// events := l.conductor(nsEvents, done)
l.process(eventc, done)
ProduceNewPolicyEvents(eventc, done, l)
log.Info("All routines started")
return nil
}
开发者ID:romana,项目名称:core,代码行数:34,代码来源:listener.go
示例8: EnsureRule
// EnsureRule implements Firewall interface. It schedules given rule for
// transition in given state and stores it in firewall store.
func (i *IPTsaveFirewall) EnsureRule(rule FirewallRule, opType RuleState) error {
log.Infof("In EnsureRule() with firewall rule %s %s", opType.String(), rule.GetBody())
var ruleExists bool
// This firewall only manages filtering rules so it only operates
// on `filter` table.
table := i.DesiredState.TableByName("filter")
if table == nil {
return fmt.Errorf("In EnsureRule() firewall doesn't have filter table")
}
// Convert iptables rule from Firewall interface into iptsave.IPrule.
tempChain := iptsave.ParseRule(bytes.NewReader([]byte(rule.GetBody())))
ipRule := tempChain.Rules[0]
// Ensure that base chain of the rule is defined in desired state.
chain := table.ChainByName(tempChain.Name)
if chain == nil {
table.Chains = append(table.Chains, tempChain)
chain = tempChain
// we just added a chain with our rule
// into the filter table so we know that
// target rule is in the table.
ruleExists = true
}
// If we didn't put that rule in the table ourselves yet then
// try to find it in existing table.
if !ruleExists {
ruleExists = chain.RuleInChain(ipRule)
}
if ruleExists {
switch opType {
case EnsureAbsent:
log.Infof("In EnsureRule - rule %s exists in current state, removing", rule.GetBody())
chain.DeleteRule(ipRule)
default:
log.Infof("In EnsureRule - nothing to do %s", rule.GetBody())
}
} else {
log.Infof("In EnsureRule - rule %s doesn't exist is current state, %s", rule.GetBody(), opType.String())
switch opType {
case EnsureLast:
chain.AppendRule(ipRule)
case EnsureFirst:
chain.InsertRule(0, ipRule)
default:
log.Infof("In EnsureRule - nothing to do %s", rule.GetBody())
}
}
return nil
}
开发者ID:romana,项目名称:core,代码行数:58,代码来源:iptsave.go
示例9: isChainExistByName
// isChainExistByName verifies if given iptables chain exists.
// Returns true if chain exists.
func (fw *IPtables) isChainExistByName(chainName string) bool {
args := []string{"-w", "-L", chainName}
output, err := fw.os.Exec(iptablesCmd, args)
if err != nil {
log.Infof("isChainExist(): iptables -L %s returned %s", chainName, err)
return false
}
log.Infof("isChainExist(): iptables -L %s returned %s", chainName, string(output))
return true
}
开发者ID:romana,项目名称:core,代码行数:12,代码来源:iptables.go
示例10: syncNetworkPolicies
// syncNetworkPolicies compares a list of kubernetes network policies with romana network policies,
// it returns a list of kubernetes policies that don't have corresponding kubernetes network policy for them,
// and a list of romana policies that used to represent kubernetes policy but corresponding kubernetes policy is gone.
func (l *KubeListener) syncNetworkPolicies(kubePolicies []v1beta1.NetworkPolicy) (kubernetesEvents []Event, romanaPolicies []common.Policy, err error) {
log.Infof("In syncNetworkPolicies with %v", kubePolicies)
policies, err := getAllPoliciesFunc(l.restClient)
if err != nil {
return
}
log.Infof("In syncNetworkPolicies fetched %d romana policies", len(policies))
// Compare kubernetes policies and all romana policies by name.
// TODO Coparing by name is fragile should be `external_id == UID`. Stas.
// Prepare a list of kubernetes policies that don't have corresponding
// romana policy.
var found bool
accountedRomanaPolicies := make(map[int]bool)
for kn, kubePolicy := range kubePolicies {
namespacePolicyNamePrefix := fmt.Sprintf("kube.default.")
found = false
for pn, policy := range policies {
fullPolicyName := fmt.Sprintf("%s%s", namespacePolicyNamePrefix, kubePolicy.ObjectMeta.Name)
if fullPolicyName == policy.Name {
found = true
accountedRomanaPolicies[pn] = true
break
}
}
if !found {
log.Tracef(trace.Inside, "Sync policies detected new kube policy %v", kubePolicies[kn])
kubernetesEvents = append(kubernetesEvents, Event{KubeEventAdded, kubePolicies[kn]})
}
}
// Delete romana policies that don't have corresponding
// kubernetes policy.
// Ignore policies that don't have "kube." prefix in the name.
for k, _ := range policies {
if !strings.HasPrefix(policies[k].Name, "kube.") {
log.Tracef(trace.Inside, "Sync policies skipping policy %s since it doesn't match the prefix `kube.`", policies[k].Name)
continue
}
if !accountedRomanaPolicies[k] {
log.Infof("Sync policies detected that romana policy %d is obsolete - scheduling for deletion", policies[k].ID)
log.Tracef(trace.Inside, "Sync policies detected that romana policy %d is obsolete - scheduling for deletion", policies[k].ID)
romanaPolicies = append(romanaPolicies, policies[k])
}
}
return
}
开发者ID:romana,项目名称:core,代码行数:57,代码来源:resources.go
示例11: SetEndpoint
// SetEndpoint implements Firewall interface. It initializes
// endpoint dependend values of firewall.
func (i *IPTsaveFirewall) SetEndpoint(netif FirewallEndpoint) error {
log.Infof("In SetEndpoint() with endpoint <iface=%s, ip=%s, mac=%s>", netif.GetName(), netif.GetIP(), netif.GetMac())
var err error
i.interfaceName = netif.GetName()
i.u32filter, i.chainPrefix, err = prepareU32Rules(netif.GetIP(), i.networkConfig)
if err != nil {
return err
}
// Assemble firewall rules needed to divert traffic
// to/from the endpoint.
divertFilter := makeDivertRules(netif)
log.Tracef(trace.Inside, "In SetEndpoint() after divertFilter with\n%s", divertFilter.RenderFooter())
// compare list of divert rules and list of current rules
// make a list of chains filled with divert rules that need
// to be created to match current rules.
backendFilter := i.CurrentState.TableByName("filter")
newChains := iptsave.MergeTables(backendFilter, divertFilter)
// schedule divert rules that don't exist yet for installation.
newFilter := i.DesiredState.TableByName("filter")
newFilter.Chains = append(newFilter.Chains, newChains...)
log.Tracef(trace.Inside, "In SetEndpoint after merge\n%s", i.CurrentState.Render())
return err
}
开发者ID:romana,项目名称:core,代码行数:32,代码来源:iptsave.go
示例12: Init
// Init calls flag.Parse() and, for now, sets up the
// credentials.
func (cs *CliState) Init() error {
cs.flagSet.Parse(os.Args[1:])
config.SetConfigName(".romana") // name of config file (without extension)
config.SetConfigType("yaml")
config.AddConfigPath("$HOME") // adding home directory as first search path
config.AutomaticEnv() // read in environment variables that match
// If a config file is found, read it in.
err := config.ReadInConfig()
if err != nil {
switch err := err.(type) {
case config.ConfigFileNotFoundError:
// For now do nothing
case *os.PathError:
if err.Error() != "open : no such file or directory" {
return err
}
default:
return err
}
}
log.Infof("Using config file: %s", config.ConfigFileUsed())
err = cs.credential.Initialize()
return err
}
开发者ID:romana,项目名称:core,代码行数:27,代码来源:service.go
示例13: ServeHTTP
func (n notFoundHandler) ServeHTTP(writer http.ResponseWriter, request *http.Request) {
// TODO answer with a 406 here?
accept := request.Header.Get("accept")
// Default to JSON.
contentType := "application/json"
if accept == "*/*" || accept == "" {
// Force json if it can take anything.
accept = "application/json"
}
format, err := negotiation.NegotiateAccept(accept, SupportedContentTypes)
var marshaller Marshaller
defaultMarshaller := ContentTypeMarshallers["application/json"]
if err == nil {
contentType = format.Value
writer.Header().Set("Content-Type", contentType)
marshaller = ContentTypeMarshallers[contentType]
}
// Error in negotiation or marshaller not found.
if err != nil || marshaller == nil {
// This should never happen... Just in case...
log.Infof("No marshaler for [%s] found in %s, %s\n", contentType, ContentTypeMarshallers, ContentTypeMarshallers["application/json"])
writer.WriteHeader(http.StatusUnsupportedMediaType)
sct := SupportedContentTypesMessage
dataOut, _ := defaultMarshaller.Marshal(sct)
writer.Write(dataOut)
return
}
dataOut, _ := marshaller.Marshal(NewError404("URI", request.RequestURI))
writer.Write(dataOut)
return
}
开发者ID:romana,项目名称:core,代码行数:33,代码来源:middleware.go
示例14: CreateDefaultRule
// CreateDefaultRule creates iptables rule for a chain with the
// specified target
func (fw *IPtables) CreateDefaultRule(chain int, target string) error {
log.Infof("In CreateDefaultRule() %s rules for chain %d", target, chain)
chainName := fw.chains[chain].ChainName
body := fmt.Sprintf("%s %s %s", chainName, "-j", target)
rule := &IPtablesRule{
Body: body,
State: setRuleInactive.String(),
}
// First create rule record in database.
err0 := fw.addIPtablesRule(rule)
if err0 != nil {
log.Error("In CreateDefaultRule() create db record for iptables rule ", rule.GetBody())
return err0
}
err1 := fw.EnsureRule(rule, EnsureLast)
if err1 != nil {
log.Errorf("In CreateDefaultRule() %s rules failed", target)
return err1
}
// Finally, set 'active' flag in database record.
if err2 := fw.Store.switchIPtablesRule(rule, setRuleActive); err2 != nil {
log.Error("In CreateDefaultRule() iptables rule created but activation failed ", rule.GetBody())
return err2
}
log.Info("In CreateDefaultRule() success")
return nil
}
开发者ID:romana,项目名称:core,代码行数:33,代码来源:iptables.go
示例15: ensureIPtablesChain
// ensureIPtablesChain checks if iptables chain in a desired state.
func (fw *IPtables) ensureIPtablesChain(chainName string, opType chainState) error {
log.Infof("In ensureIPtablesChain(): %s %s", opType.String(), chainName)
log.Tracef(trace.Inside, "In ensureIPtablesChain(): Testing chain ", chainName)
exists := fw.isChainExistByName(chainName)
log.Tracef(trace.Inside, "In ensureIPtablesChain(): Test for chain %s returned %b", chainName, exists)
var iptablesAction string
switch opType {
case ensureChainExists:
if exists {
log.Tracef(trace.Inside, "In ensureIPtablesChain(): nothing to do for chain %s", chainName)
return nil
} else {
iptablesAction = "-N"
}
case ensureChainAbsent:
if exists {
iptablesAction = "-D"
} else {
log.Tracef(trace.Inside, "In ensureIPtablesChain(): nothing to do for chain %s", chainName)
return nil
}
}
args := []string{iptablesAction, chainName}
_, err := fw.os.Exec(iptablesCmd, args)
return err
}
开发者ID:romana,项目名称:core,代码行数:31,代码来源:iptables.go
示例16: ListenAndServe
// ListenAndServe is same as http.ListenAndServe except it returns
// the address that will be listened on (which is useful when using
// arbitrary ports).
// See https://github.com/golang/go/blob/master/src/net/http/server.go
func ListenAndServe(svr *http.Server) (*RestServiceInfo, error) {
log.Infof("Entering ListenAndServe(%p)", svr)
if svr.Addr == "" {
svr.Addr = ":0"
}
ln, err := net.Listen("tcp", svr.Addr)
if err != nil {
return nil, err
}
realAddr := ln.Addr().String()
channel := make(chan ServiceMessage)
l := svr.ErrorLog
if l == nil {
l = clog.New(os.Stderr, "[negroni] ", 0)
}
go func() {
channel <- Starting
l.Printf("ListenAndServe(%p): listening on %s (asked for %s) with configuration %v, handler %v\n", svr, realAddr, svr.Addr, svr, svr.Handler)
err := svr.Serve(tcpKeepAliveListener{ln.(*net.TCPListener)})
if err != nil {
log.Criticalf("RestService: Fatal error %v", err)
os.Exit(255)
}
}()
return &RestServiceInfo{Address: realAddr, Channel: channel}, nil
}
开发者ID:romana,项目名称:core,代码行数:30,代码来源:service.go
示例17: podDownHandler
// podDownHandler cleans up after pod deleted.
func (a *Agent) podDownHandler(input interface{}, ctx common.RestContext) (interface{}, error) {
log.Trace(trace.Private, "Agent: Entering podDownHandler()")
netReq := input.(*NetworkRequest)
netif := netReq.NetIf
// We need new firewall instance here to use its Cleanup()
// to uninstall firewall rules related to the endpoint.
fw, err := firewall.NewFirewall(a.getFirewallType())
if err != nil {
return nil, err
}
err = fw.Init(a.Helper.Executor, a.store, a.networkConfig)
if err != nil {
return nil, err
}
err = fw.Cleanup(netif)
if err != nil {
return nil, err
}
// Spawn new thread to process the request
log.Infof("Agent: Got request for pod teardown %v\n", netReq)
return "OK", nil
}
开发者ID:romana,项目名称:core,代码行数:28,代码来源:handlers.go
示例18: write500
// write500 writes out a 500 error based on provided err
func write500(writer http.ResponseWriter, m Marshaller, err error) {
writer.WriteHeader(http.StatusInternalServerError)
httpErr := NewError500(err)
// Should never error out - it's a struct we know.
outData, _ := m.Marshal(httpErr)
log.Infof("Made\n\t%+v\n\tfrom\n\t%+v\n\t%s", httpErr, err, string(outData))
writer.Write(outData)
}
开发者ID:romana,项目名称:core,代码行数:9,代码来源:middleware.go
示例19: EnsureRule
// EnsureRule verifies if given iptables rule exists and creates if it's not.
func (fw IPtables) EnsureRule(rule FirewallRule, opType RuleState) error {
ruleExists := fw.isRuleExist(rule)
args := []string{}
if ruleExists {
switch opType {
case EnsureAbsent:
args = append(args, "-D")
default:
log.Info("In EnsureRule - nothing to do ", rule.GetBody())
return nil
}
} else {
switch opType {
case EnsureLast:
args = append(args, "-A")
case EnsureFirst:
args = append(args, "-I")
default:
log.Info("In EnsureRule - nothing to do ", rule.GetBody())
return nil
}
}
args = append(args, strings.Split(rule.GetBody(), " ")...)
cmdStr := iptablesCmd + " " + strings.Join(args, " ")
out, err := fw.os.Exec(iptablesCmd, args)
if err != nil {
log.Errorf("[%s]: %s failed for rule %s with error %v, saying [%s]", cmdStr, opType, rule.GetBody(), err, string(out))
} else {
if out != nil && len(out) > 0 {
log.Infof("%s success %s: [%s]", opType, rule.GetBody(), string(out))
} else {
log.Infof("%s success %s", opType, rule.GetBody())
}
}
return err
}
开发者ID:romana,项目名称:core,代码行数:42,代码来源:iptables.go
示例20: Init
func (t *Translator) Init(client *common.RestClient, segmentLabelName, tenantLabelName string) {
t.cacheMu = &sync.Mutex{}
t.restClient = client
err := t.updateCache()
if err == nil {
log.Infof("Translator cache updated - have %d tenant entries", len(t.tenantsCache))
} else {
log.Errorf("Translator cache update failed, %s", err)
}
t.segmentLabelName = segmentLabelName
t.tenantLabelName = tenantLabelName
}
开发者ID:romana,项目名称:core,代码行数:12,代码来源:translate.go
注:本文中的github.com/romana/rlog.Infof函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论