diff --git a/packages/manager/.changeset/pr-13253-changed-1767795144176.md b/packages/manager/.changeset/pr-13253-changed-1767795144176.md
new file mode 100644
index 00000000000..e9cdb2c6786
--- /dev/null
+++ b/packages/manager/.changeset/pr-13253-changed-1767795144176.md
@@ -0,0 +1,5 @@
+---
+"@linode/manager": Changed
+---
+
+Changes related to private IP field in create linode flow ([#13253](https://github.com/linode/manager/pull/13253))
diff --git a/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.test.tsx b/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.test.tsx
index e39c3fb7e70..7055b71c46b 100644
--- a/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.test.tsx
+++ b/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.test.tsx
@@ -37,4 +37,34 @@ describe('Linode Create Addons', () => {
'Backups and Private IP are not available for distributed regions.'
);
});
+
+ it('should hide the Private IP addon if interface generation is "linode"', () => {
+ const { queryByText } = renderWithThemeAndHookFormContext({
+ component: ,
+ useFormOptions: {
+ values: {
+ interface_generation: 'linode',
+ },
+ },
+ });
+
+ const privateIPLabel = queryByText('Private IP');
+
+ expect(privateIPLabel).not.toBeInTheDocument();
+ });
+
+ it('should show the Private IP addon if interface generation is not "linode"', () => {
+ const { queryByText } = renderWithThemeAndHookFormContext({
+ component: ,
+ useFormOptions: {
+ values: {
+ interface_generation: 'legacy_config',
+ },
+ },
+ });
+
+ const privateIPLabel = queryByText('Private IP');
+
+ expect(privateIPLabel).toBeVisible();
+ });
});
diff --git a/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.tsx b/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.tsx
index a8d97d19911..114468f1754 100644
--- a/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.tsx
+++ b/packages/manager/src/features/Linodes/LinodeCreate/Addons/Addons.tsx
@@ -9,7 +9,10 @@ import { PrivateIP } from './PrivateIP';
import type { CreateLinodeRequest } from '@linode/api-v4';
export const Addons = () => {
- const regionId = useWatch({ name: 'region' });
+ const [regionId, interfaceGeneration] = useWatch<
+ CreateLinodeRequest,
+ ['region', 'interface_generation']
+ >({ name: ['region', 'interface_generation'] });
const { data: regions } = useRegionsQuery();
@@ -21,6 +24,8 @@ export const Addons = () => {
const isDistributedRegionSelected =
selectedRegion?.site_type === 'distributed';
+ const shouldShowPrivateIP = interfaceGeneration !== 'linode';
+
return (
@@ -33,7 +38,7 @@ export const Addons = () => {
)}
} spacing={2}>
-
+ {shouldShowPrivateIP && }
diff --git a/packages/manager/src/features/Linodes/LinodeCreate/Addons/PrivateIP.tsx b/packages/manager/src/features/Linodes/LinodeCreate/Addons/PrivateIP.tsx
index 70e7e9802fc..a1a8ca2876a 100644
--- a/packages/manager/src/features/Linodes/LinodeCreate/Addons/PrivateIP.tsx
+++ b/packages/manager/src/features/Linodes/LinodeCreate/Addons/PrivateIP.tsx
@@ -2,6 +2,7 @@ import { useRegionsQuery } from '@linode/queries';
import {
Checkbox,
FormControlLabel,
+ NewFeatureChip,
Notice,
Stack,
Typography,
@@ -55,9 +56,18 @@ export const PrivateIP = () => {
/>
)}
- Use Private IP for a backend node to a NodeBalancer. Use VPC instead
- for private communication between your Linodes.
+ Lets you connect with other Linodes in the same region over the data
+ center's private network, without using a public IPv4 address.
+
+
+
+
+ You can use VPC for private networking instead. NodeBalancers
+ now connect to backend nodes without a private IPv4 address.
+
+
+
}
onChange={field.onChange}