// ImportModel deserializes a model description from the bytes, transforms // the model config based on information from the controller model, and then // imports that as a new database model. func ImportModel(st *state.State, bytes []byte) (*state.Model, *state.State, error) { model, err := description.Deserialize(bytes) if err != nil { return nil, nil, errors.Trace(err) } controllerModel, err := st.ControllerModel() if err != nil { return nil, nil, errors.Trace(err) } controllerConfig, err := controllerModel.Config() if err != nil { return nil, nil, errors.Trace(err) } model.UpdateConfig(controllerValues(controllerConfig)) if err := updateConfigFromProvider(model, controllerConfig); err != nil { return nil, nil, errors.Trace(err) } dbModel, dbState, err := st.Import(model) if err != nil { return nil, nil, errors.Trace(err) } return dbModel, dbState, nil }
func (s *ExportSuite) TestExportModel(c *gc.C) { bytes, err := migration.ExportModel(s.State) c.Assert(err, jc.ErrorIsNil) // The bytes must be a valid model. _, err = description.Deserialize(bytes) c.Assert(err, jc.ErrorIsNil) }
func (s *cmdModelSuite) TestDumpModel(c *gc.C) { s.SetFeatureFlags(feature.DeveloperMode) s.Factory.MakeMachine(c, &factory.MachineParams{ Jobs: []state.MachineJob{state.JobManageModel}, }) ctx := s.run(c, "dump-model") output := testing.Stdout(ctx) // The output is yaml formatted output that is a model description. model, err := description.Deserialize([]byte(output)) c.Assert(err, jc.ErrorIsNil) c.Assert(model.Config()["name"], gc.Equals, "controller") }
// ImportModel deserializes a model description from the bytes, transforms // the model config based on information from the controller model, and then // imports that as a new database model. func ImportModel(st *state.State, bytes []byte) (*state.Model, *state.State, error) { model, err := description.Deserialize(bytes) if err != nil { return nil, nil, errors.Trace(err) } dbModel, dbState, err := st.Import(model) if err != nil { return nil, nil, errors.Trace(err) } return dbModel, dbState, nil }