func main() { if len(os.Args) < 3 { usage() return } netdir := os.Getenv(EnvNetDir) if netdir == "" { netdir = DefaultNetDir } netconf, err := libcni.LoadConf(netdir, os.Args[2]) if err != nil { exit(err) } netns := os.Args[3] cninet := &libcni.CNIConfig{ Path: strings.Split(os.Getenv(EnvCNIPath), ":"), } rt := &libcni.RuntimeConf{ ContainerID: "cni", NetNS: netns, IfName: "eth0", } switch os.Args[1] { case CmdAdd: _, err := cninet.AddNetwork(netconf, rt) exit(err) case CmdDel: exit(cninet.DelNetwork(netconf, rt)) } }
Expect(err).NotTo(HaveOccurred()) pluginConfig = []byte(`{ "name": "some-plugin", "some-key": "some-value" }`) Expect(ioutil.WriteFile(filepath.Join(configDir, "50-whatever.conf"), pluginConfig, 0600)).To(Succeed()) testNetConfig = &libcni.NetworkConfig{Network: &types.NetConf{Name: "some-plugin"}, Bytes: []byte(`{ "name": "some-plugin" }`)} }) AfterEach(func() { Expect(os.RemoveAll(configDir)).To(Succeed()) }) Describe("LoadConf", func() { It("finds the network config file for the plugin of the given type", func() { netConfig, err := libcni.LoadConf(configDir, "some-plugin") Expect(err).NotTo(HaveOccurred()) Expect(netConfig).To(Equal(&libcni.NetworkConfig{ Network: &types.NetConf{Name: "some-plugin"}, Bytes: pluginConfig, })) }) Context("when the config directory does not exist", func() { BeforeEach(func() { Expect(os.RemoveAll(configDir)).To(Succeed()) }) It("returns a useful error", func() { _, err := libcni.LoadConf(configDir, "some-plugin") Expect(err).To(MatchError("no net configurations found"))