netctl

package
v0.0.0-...-8dd92da Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 6, 2018 License: Apache-2.0 Imports: 21 Imported by: 0

Documentation

Index

Constants

View Source
const DefaultMaster = "http://netmaster:9999"

DefaultMaster is the master to use when none is provided.

Variables

View Source
var Commands = []cli.Command{
	{
		Name:   "version",
		Usage:  "Version Information",
		Action: showVersion,
	},
	{
		Name:   "login",
		Usage:  "authenticate to Contiv (you must specify auth_proxy's HTTPS address in the --netmaster flag)",
		Action: login,
	},
	{
		Name:  "group",
		Usage: "Endpoint Group manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "create",
				Usage:     "Create an endpoint group",
				ArgsUsage: "[network] [group]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.StringSliceFlag{
						Name:  "policy, p",
						Usage: "Policy",
					},
					cli.StringFlag{
						Name:  "networkprofile, n",
						Usage: "network profile",
					},
					cli.StringSliceFlag{
						Name:  "external-contract, e",
						Usage: "External contract",
					},
					cli.StringFlag{
						Name:  "ip-pool, r",
						Usage: "IP Address range, example 10.36.0.1-10.36.0.10",
					},
					cli.StringFlag{
						Name:  "epg-tag, tag",
						Usage: "Configured Group Tag",
					},
				},
				Action: createEndpointGroup,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect a EndpointGroup",
				ArgsUsage: "[group]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    inspectEndpointGroup,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete an endpoint group",
				ArgsUsage: "[group]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deleteEndpointGroup,
			},
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List endpoint groups",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listEndpointGroups,
			},
		},
	},
	{
		Name:    "endpoint",
		Aliases: []string{"ep"},
		Usage:   "Endpoint Inspection",
		Subcommands: []cli.Command{
			{
				Name:      "inspect",
				Usage:     "Inspect an Endpoint",
				ArgsUsage: "[epid]",
				Action:    inspectEndpoint,
			},
		},
	},
	{
		Name:  "netprofile",
		Usage: "Network profile manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "create",
				Usage:     "Create a network profile",
				ArgsUsage: "[netprofile]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.StringFlag{
						Name:  "bandwidth, b",
						Usage: "Bandwidth (e.g., 10 kbps, 100 mbps, 1gbps)",
					},
					cli.IntFlag{
						Name:  "dscp, d",
						Usage: "DSCP",
					},
					cli.IntFlag{
						Name:  "burst, s",
						Usage: "burst size(Must be in kilobytes)",
					},
				},
				Action: createNetProfile,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete a network profile",
				ArgsUsage: "[network] [group]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deleteNetProfile,
			},
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List network profile",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listNetProfiles,
			},
			{
				Name:      "inspect",
				Usage:     "inspect network profile",
				ArgsUsage: "[netprofile]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    inspectNetprofile,
			},
		},
	},
	{
		Name:    "network",
		Aliases: []string{"net"},
		Usage:   "Network manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List networks",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listNetworks,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect a Network",
				ArgsUsage: "[network]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    inspectNetwork,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete a network",
				ArgsUsage: "[network]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deleteNetwork,
			},
			{
				Name:      "create",
				Usage:     "Create a network",
				ArgsUsage: "[network]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.StringFlag{
						Name:  "nw-type, n",
						Usage: "Network Type (infra or data)",
						Value: "data",
					},
					cli.StringFlag{
						Name:  "encap, e",
						Usage: "Encap type (vlan or vxlan)",
						Value: "vxlan",
					},
					cli.IntFlag{
						Name:  "pkt-tag, p",
						Usage: "Packet tag (Vlan ID/VNI)",
					},
					cli.StringFlag{
						Name:  "subnet, s",
						Usage: "Subnet CIDR - REQUIRED",
					},
					cli.StringFlag{
						Name:  "gateway, g",
						Usage: "Gateway",
					},
					cli.StringFlag{
						Name:  "subnetv6, s6",
						Usage: "IPv6 Subnet CIDR ",
					},
					cli.StringFlag{
						Name:  "gatewayv6, g6",
						Usage: "IPv6 Gateway",
					},
					cli.StringFlag{
						Name:  "nw-tag, tag",
						Usage: "Configured Network Tag",
					},
				},
				Action: createNetwork,
			},
		},
	},
	{
		Name:  "tenant",
		Usage: "Tenant manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List tenants",
				ArgsUsage: " ",
				Flags:     []cli.Flag{quietFlag, jsonFlag},
				Action:    listTenants,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete a tenant",
				ArgsUsage: "[tenant]",
				Action:    deleteTenant,
			},
			{
				Name:      "create",
				Usage:     "Create a tenant",
				ArgsUsage: "[tenant]",
				Action:    createTenant,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect a tenant",
				ArgsUsage: "[tenant]",
				Action:    inspectTenant,
			},
		},
	},
	{
		Name:  "policy",
		Usage: "Policy manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "create",
				Usage:     "Create a new policy",
				ArgsUsage: "[policy]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    createPolicy,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete a policy",
				ArgsUsage: "[policy]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deletePolicy,
			},
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List policies",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listPolicies,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect a policy",
				ArgsUsage: "[policy]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    inspectPolicy,
			},
			{
				Name:      "rule-ls",
				Usage:     "List rules for a given tenant,policy",
				ArgsUsage: "[policy]",
				Flags:     []cli.Flag{tenantFlag, jsonFlag, quietFlag},
				Action:    listRules,
			},
			{
				Name:      "rule-rm",
				Usage:     "Delete a rule from the policy",
				ArgsUsage: "[policy] [rule id]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deleteRule,
			},
			{
				Name:      "rule-add",
				Usage:     "Add a new rule to the policy",
				ArgsUsage: "[policy] [rule id]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.IntFlag{
						Name:  "priority, p",
						Usage: "Priority Indicator",
						Value: 1,
					},
					cli.StringFlag{
						Name:  "direction, d",
						Usage: "Direction of traffic (in/out)",
						Value: "in",
					},
					cli.StringFlag{
						Name:  "from-group, g",
						Usage: "From Endpoint Group Name (Valid in incoming direction only)",
					},
					cli.StringFlag{
						Name:  "to-group, e",
						Usage: "To Endpoint Group Name (Valid in outgoing direction only)",
					},
					cli.StringFlag{
						Name:  "from-network, n",
						Usage: "From Network name (Valid in incoming direction only)",
					},
					cli.StringFlag{
						Name:  "to-network, o",
						Usage: "To Network name (Valid in outgoing direction only)",
					},
					cli.StringFlag{
						Name:  "from-ip-address, i",
						Usage: "From IP address/CIDR (Valid in incoming direction only)",
					},
					cli.StringFlag{
						Name:  "to-ip-address, s",
						Usage: "To IP address/CIDR (Valid in outgoing direction only)",
					},
					cli.StringFlag{
						Name:  "protocol, l",
						Usage: "Protocol (e.g., tcp, udp, icmp)",
					},
					cli.IntFlag{
						Name:  "port, P",
						Usage: "Port",
					},
					cli.StringFlag{
						Name:  "action, j",
						Usage: "Action to take (allow or deny)",
						Value: "allow",
					},
				},
				Action: addRule,
			},
		},
	},
	{
		Name:  "external-contracts",
		Usage: "External contracts",
		Subcommands: []cli.Command{
			{
				Name:    "ls",
				Aliases: []string{"list"},
				Usage:   "List external contracts",
				Flags:   []cli.Flag{quietFlag, allFlag, jsonFlag, tenantFlag},
				Action:  listExternalContracts,
			},
			{
				Name:    "rm",
				Aliases: []string{"delete"},
				Usage:   "Delete external contracts",
				Flags:   []cli.Flag{tenantFlag},
				Action:  deleteExternalContracts,
			},
			{
				Name:  "create",
				Usage: "Create external contracts",
				Flags: []cli.Flag{
					tenantFlag,
					cli.BoolFlag{
						Name:  "consumed, c",
						Usage: "External contracts type - consumed",
					},
					cli.BoolFlag{
						Name:  "provided, p",
						Usage: "External contracts type - provided",
					},
					cli.StringSliceFlag{
						Name:  "contract, a",
						Usage: "Contract",
					},
				},
				Action: createExternalContracts,
			},
		},
	},
	{
		Name:  "global",
		Usage: "Global information",
		Subcommands: []cli.Command{
			{
				Name:      "info",
				Usage:     "Show global information",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag},
				Action:    showGlobal,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect Global Operational Information",
				ArgsUsage: " ",
				Action:    inspectGlobal,
			},
			{
				Name:      "set",
				Usage:     "Set global parameters",
				ArgsUsage: " ",
				Flags: []cli.Flag{
					cli.StringFlag{
						Name:  "fabric-mode, f",
						Usage: "Fabric mode (aci, aci-opflex or default)",
					},
					cli.StringFlag{
						Name:  "vlan-range, v",
						Usage: "Allowed Vlan id range",
					},
					cli.StringFlag{
						Name:  "vxlan-range, x",
						Usage: "Allowed Vxlan VNID range",
					},
					cli.StringFlag{
						Name:  "fwd-mode, b",
						Usage: "forwarding mode (bridge,routing)",
					},
					cli.StringFlag{
						Name:  "arp-mode, a",
						Usage: "arp mode (proxy,flood)",
					},
					cli.StringFlag{
						Name:  "private-subnet, s",
						Usage: "Select a /16 private subnet for host access",
						Value: "172.19.0.0/16",
					},
				},
				Action: setGlobal,
			},
		},
	},
	{
		Name:  "aci-gw",
		Usage: "ACI Gateway information",
		Subcommands: []cli.Command{
			{
				Name:      "info",
				Usage:     "Show aci gateway information",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag},
				Action:    showAciGw,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect aci gateway operational information",
				ArgsUsage: " ",
				Action:    inspectAciGw,
			},
			{
				Name:      "set",
				Usage:     "Set aci-gw parameters",
				ArgsUsage: " ",
				Flags: []cli.Flag{
					cli.StringFlag{
						Name:  "path-bindings, p",
						Usage: "Blank or  Comma separated paths of the form topology/pod-1/paths-101/pathep-[eth1/14]",
					},
					cli.StringFlag{
						Name:  "node-bindings, n",
						Usage: "Blank or  Comma separated nodes of the form topology/pod-1/node-101",
					},
					cli.StringFlag{
						Name:  "phys-dom, d",
						Usage: "ACI physical domain name (e.g. containerDom)",
					},
					cli.StringFlag{
						Name:  "enforce-policies, e",
						Usage: "Should security policies be enforced (yes,no)",
						Value: "yes",
					},
					cli.StringFlag{
						Name:  "include-common-tenant, i",
						Usage: "Should gateway look up objects in common tenant as well(yes,no)",
						Value: "no",
					},
				},
				Action: setAciGw,
			},
		},
	},
	{
		Name:  "bgp",
		Usage: "router capability configuration",
		Subcommands: []cli.Command{
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List BGP configuration",
				ArgsUsage: "[hostname]",
				Flags:     []cli.Flag{jsonFlag, quietFlag},
				Action:    listBgp,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete BGP configuration",
				ArgsUsage: "[hostname]",
				Flags:     []cli.Flag{},
				Action:    deleteBgp,
			},
			{
				Name:      "create",
				Usage:     "Add BGP configuration.",
				ArgsUsage: "[hostname]",
				Flags: []cli.Flag{
					cli.StringFlag{
						Name:  "router-ip",
						Usage: "BGP my-router ip ",
					},
					cli.StringFlag{
						Name:  "as",
						Usage: "Self AS id",
					},
					cli.StringFlag{
						Name:  "neighbor-as",
						Usage: "BGP neighbor AS id",
					},
					cli.StringFlag{
						Name:  "neighbor",
						Usage: "BGP neighbor to be added",
					},
				},
				Action: addBgp,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect Bgp",
				ArgsUsage: "[hostname]",
				Action:    inspectBgp,
			},
		},
	},
	{
		Name:  "app-profile",
		Usage: "Application Profile manipulation tools",
		Subcommands: []cli.Command{
			{
				Name:      "create",
				Usage:     "Create an application profile",
				ArgsUsage: "[app-profile]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.StringFlag{
						Name:  "group, g",
						Usage: "Endpoint Group List (separated by commas)",
					},
				},
				Action: createAppProfile,
			},
			{
				Name:      "update",
				Usage:     "Update an application profile",
				ArgsUsage: "[app-profile]",
				Flags: []cli.Flag{
					tenantFlag,
					cli.StringFlag{
						Name:  "group, g",
						Usage: "Endpoint Group List (separated by commas)",
					},
				},
				Action: updateAppProfile,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete an application profile",
				ArgsUsage: "[app-profile]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    deleteAppProfile,
			},
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List Application Profiles",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listAppProfiles,
			},
			{
				Name:      "group-ls",
				Aliases:   []string{"group-list"},
				Usage:     "List groups in an app-profile",
				ArgsUsage: "[network] [app-profile]",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listAppProfEpgs,
			},
		},
	},
	{
		Name:  "service",
		Usage: "service object creation (only for  docker version <= 1.12.x)",
		Subcommands: []cli.Command{
			{
				Name:      "ls",
				Aliases:   []string{"list"},
				Usage:     "List service objects",
				ArgsUsage: " ",
				Flags:     []cli.Flag{tenantFlag, allFlag, jsonFlag, quietFlag},
				Action:    listServiceLB,
			},
			{
				Name:      "inspect",
				Usage:     "Inspect a Network",
				ArgsUsage: "[servicename]",
				Flags:     []cli.Flag{tenantFlag},
				Action:    inspectServiceLb,
			},
			{
				Name:      "rm",
				Aliases:   []string{"delete"},
				Usage:     "Delete service object",
				ArgsUsage: "[servicename]",
				Flags: []cli.Flag{
					cli.StringFlag{
						Name:  "tenant,t",
						Usage: "service tenant",
					},
				},
				Action: deleteServiceLB,
			},
			{
				Name:      "create",
				Usage:     "Create Service object (only for docker version <= 1.12.x)",
				ArgsUsage: "[servicename]",
				Flags: []cli.Flag{
					cli.StringFlag{
						Name:  "tenant,t",
						Usage: "service tenant",
					},
					cli.StringFlag{
						Name:  "network,s",
						Usage: "service network name",
					},
					cli.StringSliceFlag{
						Name:  "selector,l",
						Usage: "service selector .Usage: --selector=key1=value1 --selector=key2=value2",
					},
					cli.StringSliceFlag{
						Name:  "port,p",
						Usage: "service/provider Port Usage- --port=svcPort1:provPort1:protocol --port=svcPort2:provPort2:protocol",
					},
					cli.StringFlag{
						Name:  "preferred-ip,ip",
						Usage: "preferred ip address",
					},
				},
				Action: createServiceLB,
			},
		},
	},
}

Commands are all the commands that go into `contivctl`, the end-user tool. These are represented as cli.Command objects.

View Source
var NetmasterFlags = []cli.Flag{
	cli.StringFlag{
		Name:   "netmaster",
		Value:  DefaultMaster,
		Usage:  "The hostname of the netmaster",
		EnvVar: "NETMASTER",
	},
	cli.BoolFlag{
		Name:   "insecure",
		Usage:  "if true, strict certificate checking will be disabled",
		EnvVar: "INSECURE",
	},
}

NetmasterFlags encapsulates the flags required for talking to the netmaster.

Functions

This section is empty.

Types

type Config

type Config struct {
	Token string `json:"token"`
}

Config represents the contents of ~/.netctl/config.json

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL