|
|
@ -100,6 +100,12 @@ func (c *Client) Create(namespace string, reader io.Reader, timeout int64, shoul
|
|
|
|
if buildErr != nil {
|
|
|
|
if buildErr != nil {
|
|
|
|
return buildErr
|
|
|
|
return buildErr
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
c.Log("checking %d resources for existing conflicts", len(infos))
|
|
|
|
|
|
|
|
if err := c.existingResourceConflict(infos); err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
c.Log("creating %d resource(s)", len(infos))
|
|
|
|
c.Log("creating %d resource(s)", len(infos))
|
|
|
|
if err := perform(infos, createResource); err != nil {
|
|
|
|
if err := perform(infos, createResource); err != nil {
|
|
|
|
return err
|
|
|
|
return err
|
|
|
@ -110,6 +116,26 @@ func (c *Client) Create(namespace string, reader io.Reader, timeout int64, shoul
|
|
|
|
return nil
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func (s *Client) existingResourceConflict(infos Result) error {
|
|
|
|
|
|
|
|
err := infos.Visit(func(info *resource.Info, err error) error {
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
helper := resource.NewHelper(info.Client, info.Mapping)
|
|
|
|
|
|
|
|
if _, err := helper.Get(info.Namespace, info.Name, info.Export); err != nil {
|
|
|
|
|
|
|
|
if errors.IsNotFound(err) {
|
|
|
|
|
|
|
|
return nil
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return fmt.Errorf("Could not get information about the resource: %s", err)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return fmt.Errorf("Existing resource conflict: %s", info.Name)
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
return err
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func (c *Client) newBuilder(namespace string, reader io.Reader) *resource.Result {
|
|
|
|
func (c *Client) newBuilder(namespace string, reader io.Reader) *resource.Result {
|
|
|
|
return c.NewBuilder().
|
|
|
|
return c.NewBuilder().
|
|
|
|
Internal().
|
|
|
|
Internal().
|
|
|
|