def from_dictionary(cls, global_write_interval, dictionary): resource = ConfigurationResource() resource.write_interval = ConfigurationHelper.dict_value_or_default( dictionary, "write_interval", global_write_interval) resource.metric_name = ConfigurationHelper.dict_value_or_fail( dictionary, "metric_name", "Metric name missing in resource configuration!") resource.metric_value_template = ConfigurationHelper.dict_value_or_default( dictionary, "metric_value_template", None) resource.service_type = ConfigurationHelper.dict_value_or_fail( dictionary, "service_type", "Service type missing in resource configuration!") resource.instance_uuid = ConfigurationHelper.dict_value_or_default( dictionary, "instance_uuid", cls.GENERATE_UUID_KEYWORD) if resource.instance_uuid == cls.GENERATE_UUID_KEYWORD: resource.instance_uuid = cls.generate_uuid() elif resource.instance_uuid == cls.NO_UUID_KEYWORD: resource.instance_uuid = "" resource.instance_name = ConfigurationHelper.dict_value_or_default( dictionary, "instance_name", None) phases_dictionary = ConfigurationHelper.dict_value_or_fail( dictionary, "phases", "There are no phases defined for a resource!") previous_phase = None for phase_dictionary in phases_dictionary: phase = Phase.from_dictionary(phase_dictionary, previous_phase=previous_phase) previous_phase = phase resource.phases.append(phase) return resource
def from_dictionary(cls, global_write_interval, dictionary): resource = ConfigurationResource() resource.write_interval = ConfigurationHelper.dict_value_or_default(dictionary, "write_interval", global_write_interval) resource.metric_name = ConfigurationHelper.dict_value_or_fail( dictionary, "metric_name", "Metric name missing in resource configuration!" ) resource.metric_value_template = ConfigurationHelper.dict_value_or_default( dictionary, "metric_value_template", None ) resource.service_type = ConfigurationHelper.dict_value_or_fail( dictionary, "service_type", "Service type missing in resource configuration!" ) resource.instance_uuid = ConfigurationHelper.dict_value_or_default( dictionary, "instance_uuid", cls.GENERATE_UUID_KEYWORD ) if resource.instance_uuid == cls.GENERATE_UUID_KEYWORD: resource.instance_uuid = cls.generate_uuid() elif resource.instance_uuid == cls.NO_UUID_KEYWORD: resource.instance_uuid = "" resource.instance_name = ConfigurationHelper.dict_value_or_default( dictionary, "instance_name", None ) phases_dictionary = ConfigurationHelper.dict_value_or_fail( dictionary, "phases", "There are no phases defined for a resource!" ) previous_phase = None for phase_dictionary in phases_dictionary: phase = Phase.from_dictionary(phase_dictionary, previous_phase=previous_phase) previous_phase = phase resource.phases.append(phase) return resource
def from_dictionary(cls, dictionary, previous_phase=None): phase = Phase() phase.duration_seconds = ConfigurationHelper.dict_value_or_default(dictionary, "duration_seconds", 60) phase.min_value = ConfigurationHelper.dict_value_or_default(dictionary, "min_value", 0) phase.max_value = ConfigurationHelper.dict_value_or_default(dictionary, "max_value", 100) if "start_time" in dictionary or previous_phase is None: start_time_string = ConfigurationHelper.dict_value_or_fail( dictionary, "start_time", "The first phase has to have a start_time attribute!" ) phase.start_time = dateutil.parser.parse(start_time_string) else: phase.start_time = cls.calculate_start_time_depending_on_previous_phase(previous_phase) return phase
def from_dictionary(cls, dictionary, previous_phase=None): phase = Phase() phase.duration_seconds = ConfigurationHelper.dict_value_or_default( dictionary, "duration_seconds", 60) phase.min_value = ConfigurationHelper.dict_value_or_default( dictionary, "min_value", 0) phase.max_value = ConfigurationHelper.dict_value_or_default( dictionary, "max_value", 100) if "start_time" in dictionary or previous_phase is None: start_time_string = ConfigurationHelper.dict_value_or_fail( dictionary, "start_time", "The first phase has to have a start_time attribute!") phase.start_time = dateutil.parser.parse(start_time_string) else: phase.start_time = cls.calculate_start_time_depending_on_previous_phase( previous_phase) return phase