def is_action_necessary(self, action, resource=None):
     resource_dict = to_dict(resource)
     if action == self.GENERATE_ACTION_KEY:
         keys_to_generate = []
         if self.module.params.get("generate_data_keys_list_details"):
             for data_key in self.module.params.get(
                     "generate_data_keys_list_details"):
                 if not oci_common_utils.is_in_list(resource_dict,
                                                    data_key):
                     keys_to_generate.append(data_key)
         if keys_to_generate:
             self.module.params[
                 "generate_data_keys_list_details"] = keys_to_generate
             return True
         return False
     elif action == self.REMOVE_ACTION_KEY:
         keys_to_remove = []
         if self.module.params.get("remove_data_keys_list_details"):
             for data_key in self.module.params.get(
                     "remove_data_keys_list_details"):
                 if oci_common_utils.is_in_list(resource_dict, data_key):
                     keys_to_remove.append(data_key)
         if keys_to_remove:
             self.module.params[
                 "remove_data_keys_list_details"] = keys_to_remove
             return True
         return False
     return super(DataKeysActionsHelperCustom,
                  self).is_action_necessary(action, resource)
Exemple #2
0
    def _add_network_security_group_rules_idempotency_check(self):
        existing_security_rules = self.list_security_rules()
        provided_security_rules = self.module.params.get("security_rules", [])
        provided_security_rules_to_add = []

        existing_security_rules_as_dicts = [
            to_dict(security_rule) for security_rule in existing_security_rules
        ]

        for provided_security_rule in provided_security_rules:
            if not oci_common_utils.is_in_list(
                    existing_security_rules_as_dicts,
                    element=provided_security_rule):
                provided_security_rules_to_add.append(provided_security_rule)

        if len(provided_security_rules_to_add) == 0:
            resource = AddedNetworkSecurityGroupSecurityRules(
                security_rules=self.list_security_rules())
            return oci_common_utils.get_result(
                changed=False,
                resource_type=self.resource_type,
                resource=to_dict(resource),
            )
        else:
            self.module.params[
                "security_rules"] = provided_security_rules_to_add
 def get_update_model(self):
     update_model = super(RouteTableHelperCustom, self).get_update_model()
     existing_route_table = self.get_resource().data
     existing_route_rules = getattr(existing_route_table, "route_rules",
                                    []) or []
     existing_route_rules_dict = to_dict(existing_route_rules)
     if self.module.params.get("purge_route_rules") is False:
         if existing_route_rules:
             update_model.route_rules = (getattr(update_model,
                                                 "route_rules", []) or [])
             update_model.route_rules = existing_route_rules + [
                 route_rule for route_rule in update_model.route_rules
                 if not oci_common_utils.is_in_list(
                     existing_route_rules_dict, to_dict(route_rule))
             ]
     elif self.module.params.get("delete_route_rules") is True:
         update_model.route_rules = getattr(update_model, "route_rules",
                                            []) or []
         if not update_model.route_rules:
             update_model.route_rules = existing_route_rules
         else:
             existing_route_rules = existing_route_rules or []
             update_model.route_rules = [
                 existing_route_rule
                 for existing_route_rule in existing_route_rules
                 if not any([
                     oci_common_utils.compare_dicts(
                         to_dict(route_rule), to_dict(existing_route_rule))
                     for route_rule in update_model.route_rules
                 ])
             ]
     return update_model
Exemple #4
0
 def get_update_model(self):
     update_model = super(SecurityListHelperCustom, self).get_update_model()
     existing_security_list = self.get_resource().data
     existing_ingress_security_rules = existing_security_list.ingress_security_rules
     existing_ingress_security_rules_dict = to_dict(
         existing_ingress_security_rules)
     existing_egress_security_rules = existing_security_list.egress_security_rules
     existing_egress_security_rules_dict = to_dict(
         existing_egress_security_rules)
     if self.module.params.get("purge_security_rules") is False:
         if existing_ingress_security_rules:
             update_model.ingress_security_rules = (
                 update_model.ingress_security_rules or [])
             update_model.ingress_security_rules = (
                 existing_ingress_security_rules + [
                     security_rule for security_rule in update_model.
                     ingress_security_rules if not oci_common_utils.
                     is_in_list(existing_ingress_security_rules_dict,
                                to_dict(security_rule))
                 ])
         if existing_egress_security_rules:
             update_model.egress_security_rules = (
                 update_model.egress_security_rules or [])
             update_model.egress_security_rules = existing_egress_security_rules + [
                 security_rule
                 for security_rule in update_model.egress_security_rules
                 if not oci_common_utils.is_in_list(
                     existing_egress_security_rules_dict,
                     to_dict(security_rule))
             ]
     elif self.module.params.get("delete_security_rules") is True:
         if update_model.ingress_security_rules is None:
             update_model.ingress_security_rules = existing_ingress_security_rules
         else:
             existing_ingress_security_rules = existing_ingress_security_rules or []
             update_model.ingress_security_rules = [
                 existing_security_rule for existing_security_rule in
                 existing_ingress_security_rules if not any([
                     oci_common_utils.compare_dicts(
                         to_dict(security_rule),
                         to_dict(existing_security_rule)) for security_rule
                     in update_model.ingress_security_rules
                 ])
             ]
         if update_model.egress_security_rules is None:
             update_model.egress_security_rules = existing_egress_security_rules
         else:
             existing_egress_security_rules = existing_egress_security_rules or []
             update_model.egress_security_rules = [
                 existing_security_rule for existing_security_rule in
                 existing_egress_security_rules if not any([
                     oci_common_utils.compare_dicts(
                         to_dict(security_rule),
                         to_dict(existing_security_rule))
                     for security_rule in update_model.egress_security_rules
                 ])
             ]
     return update_model
Exemple #5
0
    def is_update_necessary(self, existing_resource_dict):
        vpc_users_source_list = self.module.params.get("vpc_users")
        vpc_users_target_list = existing_resource_dict["vpc_users"]

        if vpc_users_source_list is not None and not all([
                oci_common_utils.is_in_list(
                    vpc_users_target_list,
                    element,
                    ignore_attr_if_not_in_target=False,
                ) for element in vpc_users_source_list
        ]):
            return True

        return super(BackupDestinationHelperCustom,
                     self).is_update_necessary(existing_resource_dict)
Exemple #6
0
    def _update_network_security_group_rules_idempotency_check(self):
        existing_security_rules = self.list_security_rules()
        provided_security_rules = self.module.params.get("security_rules", [])

        existing_security_rules_as_dicts = [
            to_dict(security_rule) for security_rule in existing_security_rules
        ]

        all_rules_to_update_already_exist_and_match = True
        for provided_security_rule in provided_security_rules:
            if not oci_common_utils.is_in_list(
                    existing_security_rules_as_dicts,
                    element=provided_security_rule):
                all_rules_to_update_already_exist_and_match = False

        if all_rules_to_update_already_exist_and_match:
            resource = UpdatedNetworkSecurityGroupSecurityRules(
                security_rules=self.list_security_rules())
            return oci_common_utils.get_result(
                changed=False,
                resource_type=self.resource_type,
                resource=to_dict(resource),
            )
 def is_action_necessary(self, action, resource=None):
     existing_route_rules = to_dict(resource or self.get_resource().data)
     logger.debug("Existing rules: {0}".format(existing_route_rules))
     if action == self.ADD_KEY:
         if not self.module.params.get("route_rules"):
             return False
         logger.debug("Original route rules to add: {0}".format(
             self.module.params.get("route_rules")))
         action_details = oci_common_utils.convert_input_data_to_model_class(
             self.module.params, AddDrgRouteRulesDetails)
         route_rules = to_dict(
             getattr(action_details, "route_rules", []) or [])
         route_rules_to_add = []
         for route_rule in route_rules:
             if not oci_common_utils.is_in_list(existing_route_rules,
                                                route_rule):
                 route_rules_to_add.append(route_rule)
         logger.debug("Route rules to add: {0}".format(route_rules_to_add))
         if route_rules_to_add:
             self.module.params["route_rules"] = route_rules_to_add
             return True
         return False
     elif action == self.UPDATE_KEY:
         if not self.module.params.get("route_rules"):
             return False
         logger.debug("Original route rules to update: {0}".format(
             self.module.params.get("route_rules")))
         action_details = oci_common_utils.convert_input_data_to_model_class(
             self.module.params, UpdateDrgRouteRulesDetails)
         route_rules = to_dict(
             getattr(action_details, "route_rules", []) or [])
         route_rules_to_update = []
         for route_rule in route_rules:
             existing_route_rule = None
             for existing_rule in existing_route_rules:
                 if existing_rule.get("id") == route_rule.get("id"):
                     existing_route_rule = existing_rule
             if not existing_route_rule:
                 self.module.fail_json(
                     msg="Could not find an existing rule with id: {0}".
                     format(route_rule.get("id")))
             if not oci_common_utils.compare_dicts(route_rule,
                                                   existing_route_rule):
                 route_rules_to_update.append(route_rule)
         logger.debug(
             "Route rules to update: {0}".format(route_rules_to_update))
         if route_rules_to_update:
             self.module.params["route_rules"] = route_rules_to_update
             return True
         return False
     elif action == self.REMOVE_KEY:
         route_rule_ids = self.module.params.get("route_rule_ids")
         if not route_rule_ids:
             return False
         existing_route_rule_ids = [
             existing_route_rule.get("id")
             for existing_route_rule in existing_route_rules
         ]
         logger.debug("Original route_rule_ids to remove: {0}".format(
             route_rule_ids))
         route_rule_ids_to_remove = []
         for route_rule_id in route_rule_ids:
             if route_rule_id in existing_route_rule_ids:
                 route_rule_ids_to_remove.append(route_rule_id)
         logger.debug("route_rule_ids to remove: {0}".format(
             route_rule_ids_to_remove))
         if route_rule_ids_to_remove:
             self.module.params["route_rule_ids"] = route_rule_ids_to_remove
             return True
         return False
     return super(DrgRouteRulesActionsHelperCustom,
                  self).is_action_necessary(action, resource)
 def is_action_necessary(self, action, resource=None):
     existing_statements = to_dict(resource or self.get_resource().data)
     logger.debug("Existing statements: {0}".format(existing_statements))
     if action == self.ADD_DRG_ROUTE_DISTRIBUTION_STATEMENTS_KEY:
         if not self.module.params.get("statements"):
             return False
         logger.debug("Original statements to add: {0}".format(
             self.module.params.get("statements")))
         action_details = oci_common_utils.convert_input_data_to_model_class(
             self.module.params, AddDrgRouteDistributionStatementsDetails)
         statements = to_dict(
             getattr(action_details, "statements", []) or [])
         statements_to_add = []
         for statement in statements:
             if not oci_common_utils.is_in_list(existing_statements,
                                                statement):
                 statements_to_add.append(statement)
         logger.debug("Statements to add: {0}".format(statements_to_add))
         if statements_to_add:
             self.module.params["statements"] = statements_to_add
             return True
         return False
     elif action == self.UPDATE_DRG_ROUTE_DISTRIBUTION_STATEMENTS_KEY:
         if not self.module.params.get("statements"):
             return False
         logger.debug("Original statements to update: {0}".format(
             self.module.params.get("statements")))
         action_details = oci_common_utils.convert_input_data_to_model_class(
             self.module.params,
             UpdateDrgRouteDistributionStatementsDetails)
         statements = to_dict(
             getattr(action_details, "statements", []) or [])
         statements_to_update = []
         for statement in statements:
             existing_statement = None
             for existing_stmt in existing_statements:
                 if existing_stmt.get("id") == statement.get("id"):
                     existing_statement = existing_stmt
             if not existing_statement:
                 self.module.fail_json(
                     msg="Could not find an existing statement with id: {0}"
                     .format(statement.get("id")))
             if not oci_common_utils.compare_dicts(statement,
                                                   existing_statement):
                 statements_to_update.append(statement)
         logger.debug(
             "Statements to update: {0}".format(statements_to_update))
         if statements_to_update:
             self.module.params["statements"] = statements_to_update
             return True
         return False
     elif action == self.REMOVE_DRG_ROUTE_DISTRIBUTION_STATEMENTS_KEY:
         statement_ids = self.module.params.get("statement_ids")
         if not statement_ids:
             return False
         existing_statement_ids = [
             existing_statement.get("id")
             for existing_statement in existing_statements
         ]
         logger.debug(
             "Original statement_ids to remove: {0}".format(statement_ids))
         statement_ids_to_remove = []
         for statement_id in statement_ids:
             if statement_id in existing_statement_ids:
                 statement_ids_to_remove.append(statement_id)
         logger.debug(
             "statement_ids to remove: {0}".format(statement_ids_to_remove))
         if statement_ids_to_remove:
             self.module.params["statement_ids"] = statement_ids_to_remove
             return True
         return False
     return super(DrgRouteDistributionStatementsActionsHelperCustom,
                  self).is_action_necessary(action, resource)