func (s *JujuOSEnvSuite) SetUpTest(c *gc.C) { s.oldEnvironment = make(map[string]string) for _, name := range []string{ osenv.JujuXDGDataHomeEnvKey, osenv.JujuModelEnvKey, osenv.JujuLoggingConfigEnvKey, osenv.JujuFeatureFlagEnvKey, osenv.XDGDataHome, } { s.oldEnvironment[name] = os.Getenv(name) os.Setenv(name, "") } s.oldHomeEnv = utils.Home() s.oldJujuXDGDataHome = osenv.SetJujuXDGDataHome("") utils.SetHome("") // Update the feature flag set to be the requested initial set. // This works for both windows and unix, even though normally // the feature flags on windows are determined using the registry. // For tests, setting with the environment variable isolates us // from a single resource that was hitting contention during parallel // test runs. os.Setenv(osenv.JujuFeatureFlagEnvKey, s.initialFeatureFlags) featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
func (s *flagSuite) TestParsing(c *gc.C) { s.PatchEnvironment("JUJU_TESTING_FEATURE", "MAGIC, test, space ") featureflag.SetFlagsFromEnvironment("JUJU_TESTING_FEATURE") c.Assert(featureflag.All(), jc.SameContents, []string{"magic", "space", "test"}) c.Assert(featureflag.AsEnvironmentValue(), gc.Equals, "magic,space,test") c.Assert(featureflag.String(), gc.Equals, `"magic", "space", "test"`) }
func (s *flagSuite) TestEmpty(c *gc.C) { s.PatchEnvironment("JUJU_TESTING_FEATURE", "") featureflag.SetFlagsFromEnvironment("JUJU_TESTING_FEATURE") c.Assert(featureflag.All(), gc.HasLen, 0) c.Assert(featureflag.AsEnvironmentValue(), gc.Equals, "") c.Assert(featureflag.String(), gc.Equals, "") }
func init() { if FLAGSFROMENVIRONMENT == "true" { featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) } else { featureflag.SetFlagsFromRegistry(osenv.JujuRegistryKey, osenv.JujuFeatureFlagEnvKey) } }
func (s *JujuOSEnvSuite) SetFeatureFlags(flag ...string) { flags := strings.Join(flag, ",") if err := os.Setenv(osenv.JujuFeatureFlagEnvKey, flags); err != nil { panic(err) } logger.Debugf("setting feature flags: %s", flags) featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
// checkProviderType ensures the provider type is okay. func checkProviderType(envType string) error { featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) flag, ok := provisionalProviders[envType] if ok && !featureflag.Enabled(flag) { msg := `the %q provider is provisional in this version of Juju. To use it anyway, set JUJU_DEV_FEATURE_FLAGS="%s" in your shell model` return errors.Errorf(msg, envType, flag) } return nil }
func (s *flagSuite) TestEnabled(c *gc.C) { c.Assert(featureflag.Enabled(""), jc.IsTrue) c.Assert(featureflag.Enabled(" "), jc.IsTrue) c.Assert(featureflag.Enabled("magic"), jc.IsFalse) s.PatchEnvironment("JUJU_TESTING_FEATURE", "MAGIC") featureflag.SetFlagsFromEnvironment("JUJU_TESTING_FEATURE") c.Assert(featureflag.Enabled("magic"), jc.IsTrue) c.Assert(featureflag.Enabled("Magic"), jc.IsTrue) c.Assert(featureflag.Enabled(" MAGIC "), jc.IsTrue) }
func init() { featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
func (s *AddressableContainerSetupSuite) enableFeatureFlag() { s.SetFeatureFlags(feature.AddressAllocation) featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
func setFeatureFlags(flags string) { if err := os.Setenv(osenv.JujuFeatureFlagEnvKey, flags); err != nil { panic(err) } featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
func (s *discoverySuite) setLegacyUpstart(c *gc.C) { err := os.Setenv(osenv.JujuFeatureFlagEnvKey, feature.LegacyUpstart) c.Assert(err, jc.ErrorIsNil) featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }
// setUpFeatureFlags sets the feature flags from the environment. func (s *JujuOSEnvSuite) setUpFeatureFlags(c *gc.C) { os.Setenv(osenv.JujuFeatureFlagEnvKey, s.initialFeatureFlags) featureflag.SetFlagsFromEnvironment(osenv.JujuFeatureFlagEnvKey) }