MCPcopy Create free account
hub / github.com/1Panel-dev/1Panel / CreateNetwork

Method CreateNetwork

agent/app/service/container_network.go:114–174  ·  view source on GitHub ↗
(req dto.NetworkCreate)

Source from the content-addressed store, hash-verified

112 return nil
113}
114func (u *ContainerService) CreateNetwork(req dto.NetworkCreate) error {
115 client, err := docker.NewDockerClient()
116 if err != nil {
117 return err
118 }
119 defer client.Close()
120 var ipams []network.IPAMConfig
121
122 if req.Ipv4 {
123 var itemIpam network.IPAMConfig
124 if len(req.AuxAddress) != 0 {
125 itemIpam.AuxAddress = make(map[string]string)
126 }
127 if len(req.Subnet) != 0 {
128 itemIpam.Subnet = req.Subnet
129 }
130 if len(req.Gateway) != 0 {
131 itemIpam.Gateway = req.Gateway
132 }
133 if len(req.IPRange) != 0 {
134 itemIpam.IPRange = req.IPRange
135 }
136 for _, addr := range req.AuxAddress {
137 itemIpam.AuxAddress[addr.Key] = addr.Value
138 }
139 ipams = append(ipams, itemIpam)
140 }
141 if req.Ipv6 {
142 var itemIpam network.IPAMConfig
143 if len(req.AuxAddress) != 0 {
144 itemIpam.AuxAddress = make(map[string]string)
145 }
146 if len(req.SubnetV6) != 0 {
147 itemIpam.Subnet = req.SubnetV6
148 }
149 if len(req.GatewayV6) != 0 {
150 itemIpam.Gateway = req.GatewayV6
151 }
152 if len(req.IPRangeV6) != 0 {
153 itemIpam.IPRange = req.IPRangeV6
154 }
155 for _, addr := range req.AuxAddressV6 {
156 itemIpam.AuxAddress[addr.Key] = addr.Value
157 }
158 ipams = append(ipams, itemIpam)
159 }
160
161 options := network.CreateOptions{
162 EnableIPv6: &req.Ipv6,
163 Driver: req.Driver,
164 Options: stringsToMap(req.Options),
165 Labels: stringsToMap(req.Labels),
166 }
167 if len(ipams) != 0 {
168 options.IPAM = &network.IPAM{Config: ipams}
169 }
170 if _, err := client.NetworkCreate(context.TODO(), req.Name, options); err != nil {
171 return err

Callers

nothing calls this directly

Calls 2

stringsToMapFunction · 0.85
CloseMethod · 0.65

Tested by

no test coverage detected